Entwickler-Ecke

Multimedia / Grafik - Wie lege ich ein Koordinatensystem über ein Bitmap???


Delphianfänger81 - Fr 20.10.06 21:25
Titel: Wie lege ich ein Koordinatensystem über ein Bitmap???
Ich möchte ein Koordinatensystem über ein geladenes Bitmap legen. Wenn möglich zentrisch in der Mitte des Bildes.
Habe bereits hier im Forum gesucht, da es ja zu diesem Thema schon einiges gibt, doch leider war es mir nicht möglich als absoluter Anfänger die gefunden Quelltexte oder Hilfen richtig umzusetzten....

Daher bitte bitte geduldig helfen ;-)
Vielen Dank !!!


elundril - Fr 20.10.06 21:53

@GTA-Place: Bitte diesen beitrag überspringen und erst danach weiterlesen. wir wollen ja nich das du an einem Schlaganfall stirbst!


zuerstmal schaust du nach wie breit und wie hoch das Bild ist mit

Delphi-Quelltext
1:
2:
3:
4:
xmitte,ymitte: integer;

xmitte:=deinbmp.width div 2;    
ymitte:=deinbmp.heigth div 2;


und dann zeichnest du mittels Cavas.Moveto und Canvas.Lineto das Fadenkreuz.
z.b.: Fadenkreuz übers ganze Bild:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var xmitte,ymitte: integer;
begin
  xmitte:=meinbmp.width div 2;
  ymitte:=meinbmp.heigth div 2;

  bmp.Canvas.moveto(xmitte,0);
  bmp.Canvas.lineto(xmitte,bmp.heigth);
  
  bmp.Canvas.moveto(0,ymitte);
  bmp.canvas.lineto(bmp.width,ymitte);
  Image1.assign(bmp);


Ich hoffe das stimmt habs noch nicht getestet!

mfg el


Delphianfänger81 - Fr 20.10.06 22:55

Okay,
habe es zum Laufen bekommen. Vielen Dank.
Kann man eigentlich eine Einteilung der Linien hinzufügen ?


_frank_ - Sa 21.10.06 03:11

klar, musst halt malen ;)

ich hab das mal für die x-Achse gemacht (brauchst das nur noch für die y-achse zu übernehmen)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
procedure TForm1.Button1Click(Sender: TObject);
var xmitte,ymitte,i,tw: integer;
    bmp:TBitmap;
    s:string;
begin
  bmp:=TBitmap.create;
  bmp.width:=200;
  bmp.Height:=200;
  xmitte:=bmp.width div 2;
  ymitte:=bmp.height div 2;

  bmp.Canvas.moveto(xmitte,0);
  bmp.Canvas.lineto(xmitte,bmp.height);

  bmp.Canvas.moveto(0,ymitte);
  bmp.canvas.lineto(bmp.width,ymitte);

  i:=20;
  while i< xmitte do
  begin
    s:=IntToStr(i div 20);
    tw:=bmp.Canvas.TextWidth(s) div 2;
    //positive Achse
    bmp.canvas.MoveTo(xmitte+i,ymitte-5);
    bmp.canvas.LineTo(xmitte+i,ymitte+5);
    bmp.canvas.TextOut(xmitte+i-tw,ymitte+5,s);
    //negative Achse
    bmp.canvas.MoveTo(xmitte-i,ymitte-5);
    bmp.canvas.LineTo(xmitte-i,ymitte+5);
    bmp.canvas.TextOut(xmitte-i-tw-3,ymitte+5,'-'+s);
    inc(i,20);
  end;

  bitblt(canvas.handle,0,0,bmp.width,bmp.height,bmp.canvas.handle,0,0,srccopy);
  bmp.free;
end;


Gruß Frank


Kroko - Sa 21.10.06 15:45

schau mal dort [http://www.delphi-forum.de/topic_Komponente+Koordinatensystem_57509.html], die Source liegen ja bei!