![]() |
Re: Genau 1 cm abmessen
Handle muss das der Canvas sein für das du den MapMode ändern willst. Steht aber alles in der Hilfe.
|
Re: Genau 1 cm abmessen
Ich habs jetzt so versucht:
Delphi-Quellcode:
Aber es klappt leider dennoch nicht.
pcanvas := (sender as TPaintbox).Canvas;
pcanvas.pen.color := ClBlack; setmapmode(MM_HIMETRIC,pcanvas.Handle); Ich weiss ich geh euch bestimmt mittlerweile schon auf die Nerven, aber ich kriegs einfach net hin :wall: . Gruß Stefan |
Re: Genau 1 cm abmessen
Hallo Stefan,
vielleicht findest du einen Fehler, wenn du die ![]() Gruß Hawkeye |
Re: Genau 1 cm abmessen
geht es ums drucken oder um die größe auf dem Bildschirm? Die größe auf dem Bildschirm kannst du nicht bestimmen. Denn es lässt sich nicht ermitteln wie das Bild bei einer Röhre gestreckt wurde etc.
|
Re: Genau 1 cm abmessen
Um den Bildschirm gehts.
Aber bei Programmen wie Word und so, hat man ja auch eine Messskale, mit der man den Rand justieren kann. Ich habe bei der SETMAPMODE-Funktion jetzt die beiden Parameter vertauscht:
Delphi-Quellcode:
Jetzt wird plötzlich gar nichts mehr gezeichnet.
setmapmode(pcanvas.handle,MM_HIMETRIC);
Gruß Stefan |
Re: Genau 1 cm abmessen
Der erste Parameter muss das Handle sein und der zweite der Modus. Das du jetzt plötzlich nichts mehr siehst liegt vermutlich daran das du nicht bedacht hast das die Y-Achse jetzt in die andere Richtung verläuft.
Hast du die Hilfe auch wirklich angeschaut? |
Re: Genau 1 cm abmessen
Zitat:
Um die ganze Geschichte jetzt mal etwas zu beschleunigen schick ich euch mal den ganzen Code:
Delphi-Quellcode:
Die Hilfe im Win SDK hab ich mir durchgelesen.
procedure TFFluchtpunkt.PaintBox1Paint(Sender: TObject);
var pcanvas : TCanvas; i,x: Integer; begin pcanvas := (sender as TPaintbox).Canvas; pcanvas.pen.color := ClBlack; setmapmode(pcanvas.handle,MM_HIMETRIC); //Hier liegt der Hund begraben x:=Paintbox1.Left+50; for i := 1 to 28 do begin pcanvas.LineTo(x,1000); pcanvas.MoveTo(0,0); x:=x+50; end; pcanvas.MoveTo(Paintbox1.Width,0); x:=Paintbox1.Width; for i := 1 to 29 do begin pcanvas.Lineto(x,1000); pcanvas.MoveTo(Paintbox1.Width,0); x:=x-50; end; end; Gruß Stefan |
Re: Genau 1 cm abmessen
Haha, wie normal auch... Normalerweise geht in Delphi y nach unten. Du musst jetzt negative y-Werte einsetzen.
|
Re: Genau 1 cm abmessen
Mann ist das kompliziert oder ich zu blöd :wall: .
Für heute leg ich die Sache wahrscheinlich erstmal aufs Eis. Hier mein aktueller Code, der auch nicht so funktioniert wie er soll:
Delphi-Quellcode:
Ich bin so verwirrt, dass ich kaum noch weiss, welche Zahl was macht...
procedure TFFluchtpunkt.PaintBox1Paint(Sender: TObject);
var pcanvas : TCanvas; // Hilfsvariable i,x: Integer; begin // Canvas der Paintbox besorgen pcanvas := (sender as TPaintbox).Canvas; pcanvas.pen.color := ClBlack; setmapmode(pcanvas.handle,MM_LOMETRIC); x:=Paintbox1.Left+10000; for i := 1 to 28 do begin pcanvas.LineTo(x,-50000); pcanvas.MoveTo(0,0); x:=x+1000; end; pcanvas.MoveTo(Paintbox1.Width,0); x:=Paintbox1.Width+10000; for i := 1 to 29 do begin pcanvas.Lineto(x,-50000); pcanvas.MoveTo(Paintbox1.Width,0); x:=x-1000; end; end; Ich schlaf nochmal drüber. Gruß Stefan |
Re: Genau 1 cm abmessen
Zitat:
Ist es aber nicht:
Delphi-Quellcode:
Ist nur sichtbar, wenn ich den MapMode nicht umschalte.
Canvas.Rectangle(-10,-10,10,10);
Strange. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz