Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Genau 1 cm abmessen (https://www.delphipraxis.net/92763-genau-1-cm-abmessen.html)

SirThornberry 25. Mai 2007 19:53

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.

Stefan92 25. Mai 2007 20:04

Re: Genau 1 cm abmessen
 
Ich habs jetzt so versucht:
Delphi-Quellcode:
pcanvas := (sender as TPaintbox).Canvas;
pcanvas.pen.color := ClBlack;
setmapmode(MM_HIMETRIC,pcanvas.Handle);
Aber es klappt leider dennoch nicht.
Ich weiss ich geh euch bestimmt mittlerweile schon auf die Nerven, aber ich kriegs einfach net hin :wall: .

Gruß

Stefan

Hawkeye219 25. Mai 2007 20:23

Re: Genau 1 cm abmessen
 
Hallo Stefan,

vielleicht findest du einen Fehler, wenn du die Beschreibung von SetMapMode (insbesondere die Parameterliste) noch einmal genau studierst.

Gruß Hawkeye

SirThornberry 25. Mai 2007 20:33

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.

Stefan92 25. Mai 2007 20:40

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:
 setmapmode(pcanvas.handle,MM_HIMETRIC);
Jetzt wird plötzlich gar nichts mehr gezeichnet.

Gruß

Stefan

SirThornberry 25. Mai 2007 21:05

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?

Stefan92 25. Mai 2007 21:22

Re: Genau 1 cm abmessen
 
Zitat:

MM_HIMETRIC Each logical unit is mapped to 0.01 millimeter. Positive x is to the right; positive y is up.
Das ist doch eigentlich wie sonst auch. x geht nach rechts und y nach oben.
Um die ganze Geschichte jetzt mal etwas zu beschleunigen schick ich euch mal den ganzen Code:
Delphi-Quellcode:
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;
Die Hilfe im Win SDK hab ich mir durchgelesen.

Gruß

Stefan

Apollonius 25. Mai 2007 21:31

Re: Genau 1 cm abmessen
 
Haha, wie normal auch... Normalerweise geht in Delphi y nach unten. Du musst jetzt negative y-Werte einsetzen.

Stefan92 25. Mai 2007 21:55

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:
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 bin so verwirrt, dass ich kaum noch weiss, welche Zahl was macht...
Ich schlaf nochmal drüber.

Gruß

Stefan

BenjaminH 25. Mai 2007 21:56

Re: Genau 1 cm abmessen
 
Zitat:

Zitat von Apollonius
Haha, wie normal auch... Normalerweise geht in Delphi y nach unten. Du musst jetzt negative y-Werte einsetzen.

Dann müsste ja, wenn ich etwas um den Ursprung herum zeichne das jedesmal sichtbar sein.
Ist es aber nicht:
Delphi-Quellcode:
Canvas.Rectangle(-10,-10,10,10);
Ist nur sichtbar, wenn ich den MapMode nicht umschalte.
Strange.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.
Seite 2 von 3     12 3      

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