Kezdőoldal » Számítástechnika » Programozás » Ha wxwidget-tel rajzoltam egy...

Ha wxwidget-tel rajzoltam egy panelra, akkor a zoom-olásnál hogyan kell kezelni az eltolást, hogy a kurzor pozícióra zoom-oljon?

Figyelt kérdés

Főleg wxwidget megoldások érdekelnének, mert azzal csinálom. Szóval amikor lekezelem pl. a EVT_MOUSEWHEEL eseményt, és beállítom a wxDC SetUserScale-jét (vagy wxGraphicsContext::Scale), akkor hogyan kell hozzá az eltolást számítani, hogy a kurzor alatti pont egy helyben maradjon?


Sokat szenvedtem vele, de egyszerűen nem megy, és ilyen megoldást guglival sem találtam. Sok helyen a DeviceToLogical függvényt használják, de az csak a DC-nek van, viszont az eseménykezelő függvényben nincs DC, csak a Paint függvényben. Szóval ezt sem értem igazán. :(



2013. júl. 8. 11:26
 1/1 A kérdező kommentje:

Közben rájöttem, szóval ha valakinek hasonló gondja van, az új eltolási érték:


offsetX = devpt.x - logpt.x * scale;

offsetY = devpt.y - logpt.y * scale;



offset: eltolás, pl. wxGraphicsContext::Translate(offsetX, offsetY);

devpt: a kurzor device pozíció, pl. amit a wxMouseEvent::GetPosition() visszaad.

logpt: az eltolás és skálázás nélküli pozíció. "log.x = (dev.x - offsetX) / scale"

scale: skálázás/nagyítás. Pl. "wxGraphicsContext::Scale(scale, scale)"


Kár, hogy ezért nem jár zöld mancs. :(

2013. júl. 14. 13:26

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!