Entwickler-Ecke

Multimedia / Grafik - Image zentriert anzeigen


nepleurepas - Mi 18.04.07 21:14
Titel: Image zentriert anzeigen
Hallo,
habe ein Programm dass auf ein Image zeichnet. Das Image ist aber größer als der desktop (3000*3000 Pxls). Wie kann ich nun erreichen, dass das Image im mittleren Bereich angezeigt wird? Bis jetzt wird das Image immer links-oben angezeigt. Hab versucht das mit den Einstellungen von "anchors" zu erreichen, hat aber nich geklappt.

Danke für Antworten, gruß Stefan


alias5000 - Mi 18.04.07 21:20

Versuch das mal mit den properties Left und Top.

Gruß
alias5000


nepleurepas - Mi 18.04.07 21:30

user profile iconalias5000 hat folgendes geschrieben:
Versuch das mal mit den properties Left und Top.

Gruß
alias5000


Das funktioniert so jetzt nicht. Mit left und top verschiebe ich das image ja nur innerhalb des forms.

Zum weitern Verständniss:
Wenn mein Image aber mehr Pixel hat als das Form, bekomme ich scroll balken. Diese sollen nun so gescrollt sein dass das Image zentriert auf dem Form angezeigt wird.
Hoffe Ihr versteht mich.

Gruß Stefan


ZeitGeist87 - Mi 18.04.07 21:35

Hallo!

Nochmal zum Verständnis: Das Image soll auf der FORM zentriert werden?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function CenterImage(MyImage: TImage; MyForm: TForm): Boolean;
begin;
 CenterImage:= false;

 //Horizontal ausrichten
 MyImage.left:= round((MyForm.width/2) - (MyImage.width/2));

 //Vertikal ausrichten
 MyImage.top:= round((MyForm.height/2) - (MyImage.Height/2));

 CenterImage:= true; 
end;


Aufruf:


Delphi-Quelltext
1:
2:
if not CenterImage(Image1, Form1) = true then
 //Fehlermeldung


LG
Stefan


nepleurepas - Mi 18.04.07 21:48

user profile iconZeitGeist87 hat folgendes geschrieben:
Hallo!

Nochmal zum Verständnis: Das Image soll auf der FORM zentriert werden?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function CenterImage(MyImage: TImage; MyForm: TForm): Boolean;
begin;
 CenterImage:= false;

 //Horizontal ausrichten
 MyImage.left:= round((MyForm.width/2) - (MyImage.width/2));

 //Vertikal ausrichten
 MyImage.top:= round((MyForm.height/2) - (MyImage.Height/2));

 CenterImage:= true; 
end;


Aufruf:


Delphi-Quelltext
1:
2:
if not CenterImage(Image1, Form1) = true then
 //Fehlermeldung


LG
Stefan


Hab mich wohl missverständlich ausgesrückt.Wo das IMage auf der Form ist, is wurscht. Das kann ich ja auch einfach per drag&drop so hinrücken wie ich es möchte. Ich versuch mal zu prezisieren:

Mein Image ist 3000*300 Pxls. Das was darauf gezeichnet werden soll, hat aber meißtens nur ca 500 Pxls Ausdehnung, wird aber IMMER um den Mittelpunkt des Images(1500/1500) gezeichnet. Da der bereich vom Image der auf einmal angezeigt wird aber nur 800*800 Pxls groß ist (wird ja davon bestimmt wie groß die Form ist) sieht man das gezeichnete nur, wenn die 800*800 Pxl um den Mittelpnkt herum angezeigt werden.
Momentan werden die Pixel (0,0,800,800) angezeigt. D.h. ich muss dann immer erst hinscrollen um die Mitte zu sehen.
Will aber dass die Pixel (1100,1900,1100,1900) angezeigt werden.


alias5000 - Mi 18.04.07 21:48

Wenn du die Form entsprechend mit dem Image zusammen vergrößerst, kannst du left und top von der Form setzen und dann geht das.
Entsprechende Ansätze zum Zentrieren kannst du dir ja aus dem Ansatz von ZeitGeist ableiten

Hatte mich vorhin sehr knapp ausgedrückt

Gruß
alias5000


nepleurepas - Mi 18.04.07 22:19

user profile iconalias5000 hat folgendes geschrieben:
Wenn du die Form entsprechend mit dem Image zusammen vergrößerst, kannst du left und top von der Form setzen und dann geht das.
Entsprechende Ansätze zum Zentrieren kannst du dir ja aus dem Ansatz von ZeitGeist ableiten

Hatte mich vorhin sehr knapp ausgedrückt

Gruß
alias5000


bitte lest nochmal meinen vorigen beitrag, auf den wurde noch nicht geantwortet.

danke, Stefan