Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Rectangle im Image zeichnen (https://www.delphipraxis.net/73812-rectangle-im-image-zeichnen.html)

renekr 24. Jul 2006 11:36


Rectangle im Image zeichnen
 
Hi,
ich will folgendes realisieren:

Ich habe eine 2. Form mit einem Image.

Wenn ich nun in der 1. Form den Button anklicke soll die 2. Form aufgehen und das Image sollte an einer gewissen stelle eine Markierung hervorheben.
so als Art Standort.

Ich habe ID's und die Id's sind xy Werte zugeordnet.

wie kann ich das am besten realisieren?
Ich habe mit canvas und zeichnen noch nie was gemacht.

Vielen dank.

konda 24. Jul 2006 12:16

Re: Rectangle im Image zeichnen
 
Vielleicht so:
Delphi-Quellcode:
uses unit2, ...

procedure form1.button1click(sender: tobject);
begin
  form2.image1.canvas.ellipse(X-Koordinatelinkeoberecke, Y-Koordinatelinkeoberecke,        
  X-Koordinaterechteobereecke, Y-Koordinaterechteobereecke);
  form2.show;
end;
:bounce1:

renekr 24. Jul 2006 17:19

Re: Rectangle im Image zeichnen
 
Hi,
Danke.
Ich habe es vorserst mal mit einem TShape gemacht.
Ds passt ganz gut.

Nun habe ich ein Problem.
Wenn ich das Image DesignTime reinmache und dann die Positionen bestimme passt alles.

Wenn ich nun das selbe Image per Filestream zur Runtime reinlade stimmen sie nciht mehr die Positionen.

An was kann das liegen ?

File Load Code:
Delphi-Quellcode:


if FileExists(remotehost+Bilder_KA_Share+'\TechPL\'+bild_name+'.jpg') then
begin
  try
    OleGraphic := TOleGraphic.Create;
    fs        := TFileStream.Create(remotehost+Bilder_KA_Share+'\TechPL\'+bild_name+'.jpg', fmOpenRead or fmSharedenyNone);
    OleGraphic.LoadFromStream(fs);
    form3.Image1.Picture.Assign(OleGraphic);
    form3.Shape1.Left:= dmstart.adoquery19.fieldbyname('X_Left').asinteger;     //272
    form3.Shape1.top:= dmstart.adoquery19.fieldbyname('Y_Top').asinteger;       //256
    form3.Shape1.Height:= dmstart.adoquery19.fieldbyname('X_Right').asinteger;  //20
    form3.Shape1.Width:= dmstart.adoquery19.fieldbyname('Y_Bottom').asinteger;  //113
  finally
    fs.Free;
    OleGraphic.Free
  end;
end else
begin
  try
    OleGraphic := TOleGraphic.Create;
    fs        := TFileStream.Create(remotehost+Bilder_KA_Share+'\TechPL\Leer.jpg', fmOpenRead or fmSharedenyNone);
    OleGraphic.LoadFromStream(fs);
    form3.Image1.Picture.Assign(OleGraphic);
  finally
    fs.Free;
    OleGraphic.Free
  end;
end;

marabu 24. Jul 2006 17:28

Re: Rectangle im Image zeichnen
 
Hallo René,

hast du schon bemerkt, dass du in der DB Right und Bottom speicherst, diese Werte beim Einlesen aber als Height und Width interpretierst?

Grüße vom marabu

renekr 24. Jul 2006 17:54

Re: Rectangle im Image zeichnen
 
Hi,
*G*.
Danke aber das war auch in der DB getauscht *GG*

Also doppelt falsch = Richtig!!

Aber wenn ich das image wie gesagt zur Design Time lade dann apssen die Werte des Shapes zur Runtime beim laden.

Wenn ich das image zur Runtime lade stimmen diese nciht mehr.

Idee?
Kann es durch den Stream iergendwas ändern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 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