Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mitte suchen (Image) (https://www.delphipraxis.net/83583-mitte-suchen-image.html)

gauggi 4. Jan 2007 20:18


Mitte suchen (Image)
 
Guten Abend!

Wie kann ich die Mitte eines Bildes (Image) ermitteln (horizontal + vertikal).

Ich hab es schon so versucht, aber es klappt nicht:

Delphi-Quellcode:
form1.Image1.Width div 2, form1.Image1.Height div 2

mfg Gauggi

mkinzler 4. Jan 2007 20:20

Re: Mitte suchen (Image)
 
Was klappt nicht?

gauggi 4. Jan 2007 20:21

Re: Mitte suchen (Image)
 
Zitat:

Zitat von mkinzler
Was klappt nicht?

der Text, den ich mit canvas nun in die mitte schreiben möchte, erscheint weiter rechts oben...

TonyR 4. Jan 2007 20:25

Re: Mitte suchen (Image)
 
Entweder ich bin nahezu blind oder...
DAS MUSS KLAPPEN ... du bekommst mit dem geschriebenen Funktionen genau den Mittel-Punkt!
vielleicht liegt es irgendwie an der Schrift-o. -größe oder ähnliches!

mkinzler 4. Jan 2007 20:27

Re: Mitte suchen (Image)
 
Wie gibst du den Text aus?(.TextOut) Hast du die Ausmaße des Text berücksichtigt (.TextExtent)

gauggi 4. Jan 2007 20:28

Re: Mitte suchen (Image)
 
Zitat:

Zitat von mkinzler
Wie gibst du den Text aus?(.TextOut) Hast du die Ausmaße des Text berücksichtigt (.TextExtent)

mit Textout

monta 4. Jan 2007 20:31

Re: Mitte suchen (Image)
 
Sollte TextOut nicht automatisch zentrieren :?:
siehe http://www.tutorial-project.de/suma/...-tutorial.html beim Beispiel für das erste Programm stet auch, es sei zentriert.

St.Pauli 4. Jan 2007 20:36

Re: Mitte suchen (Image)
 
Eventuell ist das dein Problem: Du errechnest dir den Punkt, der in der Mitte deines Images liegt. Diesen Punkt übergibst du an TextOut und lässt dort den Test ausgeben. Der Punkt dient hierbei als links oberer Rand des Textes. Also ist er nicht ganz zentriert.

Flare 4. Jan 2007 20:50

Re: Mitte suchen (Image)
 
Zitat:

Zitat von gauggi
Zitat:

Zitat von mkinzler
Was klappt nicht?

der Text, den ich mit canvas nun in die mitte schreiben möchte, erscheint weiter rechts oben...

Wenn er weiter rechts-oben erscheint, dann musst du eigentlich die X und Y-Achse verstauscht haben...
denn sonst wäre er weiter rechts-unten.


Flare

k-weddige 4. Jan 2007 22:07

Re: Mitte suchen (Image)
 
TextOut benutzt, wie St.Pauli richtig bemerkt hat, die übergebenen Koordinaten als obere, linke Ecke.
Die Befehle sollten dir da weiterhelfen:
Delphi-Quellcode:
form1.Image1.Height div 2 - Canvas.TextHeight('Text') div 2;
form1.Image1.Width div 2 - canvas.TextWidth('Text') div 2;
Konstantin

gauggi 6. Jan 2007 01:28

Re: Mitte suchen (Image)
 
Danke euch allen...


Ich hab nun bemerkt, dass es deshalb nicht klappt, weil das Bild im image angepasst wird (in diesem Fall verkleinert).

Gibt es irgendeine Möglichkeit, die eigentliche Bildgröße herauszufinden, und nicht die Größe der Image Komponente.

mfg Gauggi

Mavarik 6. Jan 2007 01:44

Re: Mitte suchen (Image)
 
Autosize := true;

gauggi 6. Jan 2007 01:47

Re: Mitte suchen (Image)
 
Zitat:

Zitat von Mavarik
Autosize := true;

Ich habe gemeint, die reale Größe, wenn das Bild so mit autosize false ist.

Mavarik 6. Jan 2007 01:50

Re: Mitte suchen (Image)
 
Delphi-Quellcode:
  img := TImage.Create;
  img.Autosize := true;
  img.picture.bitmap.loadfromfile('c:\Dudidu.bmp');
  x := img.Width;
  y := img.height;
  img.free;
Be Creative---

gauggi 6. Jan 2007 01:53

Re: Mitte suchen (Image)
 
Zitat:

Zitat von Mavarik
Delphi-Quellcode:
  img := TImage.Create;
  img.Autosize := true;
  img.picture.bitmap.loadfromfile('c:\Dudidu.bmp');
  x := img.Width;
  y := img.height;
  img.free;
Be Creative---

Gut danke.

Muetze1 6. Jan 2007 15:39

Re: Mitte suchen (Image)
 
Das ganze mit weniger Resourcenaufwand:

Delphi-Quellcode:
img := TImage.Create;
Try
  img.picture.bitmap.loadfromfile('c:\Dudidu.bmp');
  x := img.Picture.Width;
  y := img.Picture.height;
Finally
  img.free;
End;
Oder noch weniger Resourcen und Zeitaufwand:

Delphi-Quellcode:
bmp := TBitmap.Create;
Try
  bmp.loadfromfile('c:\Dudidu.bmp');
  x := bmp.Width;
  y := bmp.height;
Finally
  bmp.free;
End;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz