![]() |
Genau 1 cm abmessen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
ich weiss jetzt zwar nicht genau ob ich in die richtige Rubrik poste, schildere mein Problem aber trotzdem mal. Es geht darum eine Zeichnung mit zwei ![]() Anbei ist ein Screenshot, mit dem das ganze hoffentlich klarer wird, erstmal nur mit einem Fluchtpunkt. Von den Fluchtpunkten sollen Strahlen bis nach unten zum Papierrand ausgehen, sodass ein Hilfsraster entsteht. Das Problem liegt darin, dass ich zwischen den Strahlen genau 1 cm abmessen muss, und falls ich das Programm weitergeben werde, muss die Auflösung auch noch beachtet werden. Wie stelle ich das an? Gruß Stefan |
Re: Genau 1 cm abmessen
Du mußt irgendwie die Auflösung (dpi draft per Inch) des Monitors ermitteln.
Mit diesem Wert kann dann der Abstand ermittelt werden. Zu dpi beim Monitor lief hier vor einiger Zeit mal ein Thread. Mal nach dpi & Monitor suchen: -> ![]() Grüße Klaus |
Re: Genau 1 cm abmessen
Zitat:
|
Re: Genau 1 cm abmessen
Ok, ich guck es mir mal an.
Wenn ich noch Fragen hab, meld ich mich. Gruß Stefan |
Re: Genau 1 cm abmessen
Setz den
![]() |
Re: Genau 1 cm abmessen
Hm, ich hab mich zwar in der Hilfe schon schlau gemacht bezüglich SetMapMode, aber wie wende ich das jetzt prinzipiell an? Was ändert sich durch diese Funktion?
Ich will ja weiterhin Canvas benutzen. Gruß Stefan |
Re: Genau 1 cm abmessen
Was heißt anwenden? Du legst damit einfach die Maßeinheit und den Ursprung des Koordinatensystems fest.
|
Re: Genau 1 cm abmessen
Sorry, ich bin manchmal ein bisschen schwer von Begriff,
aber welches Koordinatensystem meinst du? :? Ist es schon vorher da oder muss ich das noch implementieren? Bis jetzt benutze ich ja lediglich eine Paintbox :gruebel: . Ich hoffe ich hab nix falsch gemacht und bitte um Verständnis, ich habe bis jetzt relativ wenig Programmiererfahrung. Gruß Stefan |
Re: Genau 1 cm abmessen
Du hast doch sicher schon einmal Koordinaten bei einer Canvas-Funktion angegeben, also muss wohl zwangsweise auch schon ein Koordinatensystem vorhanden sein :zwinker: . Das bisherige besitzt die Einheit 1 Pixel, sein Ursprung liegt in der Ecke oben links, die x-Achse verläuft nach rechts und die y-Achse nach unten. All das kannst du mit der genannten Funktion beliebig ändern.
|
Re: Genau 1 cm abmessen
Ah, ich verstehe...
Dann geh ich gleich mal wieder coden um es auszuprobieren. :coder: Gruß Stefan [edit] Es gibt doch noch was, was ich nicht verstehe:
Delphi-Quellcode:
Diesen Code habe ich angegeben, welcher normalerweise bewirken sollte, dass eine logische Einheit 0,01 mm entspricht. Nun habe ich aber schon bei 50 Einheiten quasi 1 cm, aber eben wieder nicht ganz genau.
setmapmode(MM_HIMETRIC,handle);
Irgendwas stimmt da noch nicht. Oder muss ich beim Handle etwas Bestimmtes angeben? |
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. |
Re: Genau 1 cm abmessen
Benjamin, überlege einmal, wie groß der sichtbare Teil deiner Zeichnung ist.
Zitat:
|
Re: Genau 1 cm abmessen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 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