Cześć, zastanawiałem się ostatnio nad takim zagadnieniem. Szukałem w necie informacji, ale tam znalazłem jedynie rzeczy na temat powiększania obrazów.
Co planuję zrobić.
Załóżmy, że mamy ScrollBoxa. Na nim użytkownik umieszcza sobie kreskę. Tyle, że ta kreska tak naprawdę jest obiektem. Można ją kliknąć, przenieść itd. I teraz użytkownik chce powiększyć sobie obszar roboczy. Jak to zrobić najlepiej? Bo jedyne, co mi przychodzi do głowy, to żeby:
- wyposażyć obiekt(tą kreskę) w następujące właściwości: origX, origY, origHeight, origWidth, currX, currY, currHeight, currWidth, gdzie:
origX, origY - oryginalne położenie obiektu (skala domyślna - bez powiększenia)
origHeight, origWidth - oryginalne rozmiary obiektu (skala domyślna)
currX, currY - położenie obiektu po powiększeniu
currHeight, currWidth - rozmiary obiektu po powiększeniu
I teraz tak. Załóżmy sytuację najprostszą - skala domyślna; użytkownik kładzie obiekt (tą kreskę) w obszarze roboczym i wtedy wypełniają się właściwości orig* i curr*(takie samo jak orig*)
Teraz użytkownik powiększa sobie obszar roboczy dwukrotnie. I jedyne, co mi przychodzi do głowy, to w jakiś magiczny sposób przeliczyć właściwości curr:
- zwiększyć obszar roboczy x2 (w pionie i poziomie)
- zwiększyć currHeight i currWidth x2 i w jakiś magiczny sposób obliczyć currX i currY.
Czy to jest dobry tok myślenia? Czy są do tego jakieś inne techniki/algorytmy? A może jakieś komponenty to realizujące (zamiast TScrollBox)?