Forum » Programiranje » [C#] Panel - kako narediti neke vrste koordinatni sistem znotraj Panela?
[C#] Panel - kako narediti neke vrste koordinatni sistem znotraj Panela?
whatever ::
Takle:
mam panel na eni formi v C#, pa bi rad naredil koordinatni sistem znotraj panela, pri katerem bi bila vertikalna komponenta (y) vedno med 0 (min vrednost) in 1 (max vrednost), medtem ko bi se horizontalna komponenta (x) poljubno spreminjala (enkrat 0-10, drugič 0-100, tretjic 0-1000, itd.), ko bi uporabnik izvedel določeno akcijo - denimo pritisk na gumb. Hkrati moram po panelu risati daljice, ki naj se obnašajo v skladu z dodeljeno horizontalno komponento koordinatnega sistema. Se pravi, če imam horizontalno skalo 0-10 bi narisal črto od (0,0) do (5,1), če imam pa horizontalno skalo 0-100 bi pa narisal črto od (0,0) do (50, 1). Pri tem se sama velikost panela in sam panel NE spreminja. Spreminja se zgolj koordinatni sistem znotraj panela.
Zanima me torej, kako narediti koordinatni sistem znotraj panela (sama skala bi se nahajala zunaj panela), da se potem za risanje daljice ne bi vec skliceval na privzete piksle panela (npr. 0, 0 je skrajni zgornji levi kot panela), ampak da bi panel uporabljal moj koordinatni sistem (v tem primeru bi 0,0 bil skrajni levi spodnji kot panela).
mam panel na eni formi v C#, pa bi rad naredil koordinatni sistem znotraj panela, pri katerem bi bila vertikalna komponenta (y) vedno med 0 (min vrednost) in 1 (max vrednost), medtem ko bi se horizontalna komponenta (x) poljubno spreminjala (enkrat 0-10, drugič 0-100, tretjic 0-1000, itd.), ko bi uporabnik izvedel določeno akcijo - denimo pritisk na gumb. Hkrati moram po panelu risati daljice, ki naj se obnašajo v skladu z dodeljeno horizontalno komponento koordinatnega sistema. Se pravi, če imam horizontalno skalo 0-10 bi narisal črto od (0,0) do (5,1), če imam pa horizontalno skalo 0-100 bi pa narisal črto od (0,0) do (50, 1). Pri tem se sama velikost panela in sam panel NE spreminja. Spreminja se zgolj koordinatni sistem znotraj panela.
Zanima me torej, kako narediti koordinatni sistem znotraj panela (sama skala bi se nahajala zunaj panela), da se potem za risanje daljice ne bi vec skliceval na privzete piksle panela (npr. 0, 0 je skrajni zgornji levi kot panela), ampak da bi panel uporabljal moj koordinatni sistem (v tem primeru bi 0,0 bil skrajni levi spodnji kot panela).
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
whatever ::
Mislim, da je ena varianta, da preberem horizontalne piksle oziroma širino panela, nato to delim z max vrednostjo horizontalne skale, nato pa množim z številom, ki ga vnese uporabnik.
Še kakšna ideja?
Še kakšna ideja?
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
BlueRunner ::
To o čemer govoriš, je navadna linearna transformacija. Naredi množenje vektorja z matriko, nastavi parametre transformacijske matrike, potem pa bodo točke padle natančno tam, kamor morajo pasti.
whatever ::
Lahko prosim napišeš malo več ali daš kak link, kjer je to čim bolj enostavno razloženo?
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
BlueRunner ::
|x'| |x| |sx 0 0 vx |
|y'| = |y|*|0 sy 0 vy |
|1 | |1| |0 0 0 1 |
Oziroma prevedeno v malo manj berljivo obliko:
x' = x*sx + vx
y' = y*sy + vy
sx in sy sta faktorja povečave (|s|>1) oziroma pomanjšanja (0<|s|<1).
vx in vy sta odmik izhodišča preslikanega koordinatnega sistema.
Iz podatkov izračunaj sx, sy, vx in vy, ostalo je pa že narejeno. Če bi rad prikazal npr. graf na območju [-100≤x≤100; 0≤y≤1] v oknu dimenzij 640x480, potem velja:
sx = (640 - 1) / (100 - (-100))
sy = -1 * (480 - 1) / (1 - 0)
vx = sx * (-100)
vy = sy * 0
Vse to velja, če se nisem kje zmotil... [:D]
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java-matematika] Računanje relativnega horizontalnega in vertikalnega kota v 3DOddelek: Programiranje | 1072 (908) | zavtom |
» | Fizika-prosti pad z upoštevanjem uporaOddelek: Šola | 2361 (2022) | švrk |
» | DirectX - težavicaOddelek: Programiranje | 1262 (995) | Senitel |
» | E (matematična konstanta) (strani: 1 2 3 4 )Oddelek: Šola | 15782 (10246) | Jst |
» | enačba elipseOddelek: Znanost in tehnologija | 2181 (1876) | SavoKovac |