Autor Beitrag
AMI
Hält's aus hier
Beiträge: 13


Delphi 7
BeitragVerfasst: Mo 24.04.06 17:20 
Hallo,

also ich lese mehrere Objekte aus meiner DB aus, die ich dann als paintboxen in einer GUI anzeigen will. Jedes Objekt besitzt dabei Positions- und Längenangaben in mm, z.B. X-Anfang 40000 mm, X-Ende 20000, Y 1200, Breite 1900 . Nun muß man sich das auch noch so vorstellen, daß diese Objekte auf mehreren Linien aufgeteilt sind. Also z.B. stelle ich in meiner GUI 10 Linien dar, wobei auf jeder Linie von links nach rechts Objekte dynamisch gezeichnet werden. In meiner GUI zeige ich mehrere 100 Objekte an! Problematisch ist es u.a. deswegen, weil es noch anschaulich sein soll :-)


Hat einer vielleicht eine Idee, einen Algorithmus oder Erfahrung darin, nach welchem Muster/Schema ich das am Besten machen kann/sollte?


Ich bin für jede Hilfe dankbar!


Grüße

AMI
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Mo 24.04.06 17:32 
Titel: Re: Objekt mit Millim. Längenangaben als Pixel Objekt anzeig
user profile iconAMI hat folgendes geschrieben:
Nun muß man sich das auch noch so vorstellen, daß diese Objekte auf mehreren Linien aufgeteilt sind.


Das kann ich mir nicht vorstellen. Meinst du die Objekte bestehen aus Linien, sind also z.b. ein Polygon oder sitzen Sie auf einem Gitter?
AMI Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7
BeitragVerfasst: Mo 24.04.06 17:36 
Hallo,

nein, das sind ganz einfache Rechtecke, welche auf einer Linie gezeichnet werden. Ein Gitternetz kann man es auch nennen, jedoch nur mit horizontalen Linien :-)

AMI
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Mo 24.04.06 17:38 
Aha, und einfaches Zeichnen auf die Canvas eines TImages sieht nicht gut aus?
AMI Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7
BeitragVerfasst: Mo 24.04.06 17:48 
Spaceguide,
also ich habe jetzt keine extravaganten grafischen Wünsche oder so. Mein Problem ist es, wie ich all diese (dynamischen) Objekte in einer einigermaßen anschaulichen Größe auf dem Monitor in meiner GUI darstellen soll. Gibt es eine bestimmte Formel oder einen Algorithmus, mit dem man z.B. je nach Monitor Auflösung oder so, die Größen in Pixel berechnen kann. Ich habe natürlich vorher etwas im Netz rumgesucht, aber die ganzen Formel waren eher für Bilder in verschiedenen Größen und Formate. Ich habe aber keine Bilder. ich weiß nur, daß mein Objekt an der Position X/Y ist und eine bestimmte Breite hat und an einer anderen Position endet.

Ich hoffe, daß du mich jetzt ein bissel besser verstehen kannst.

Danke

AMI
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Mo 24.04.06 18:04 
Nunja, so einfach ist das nicht. Ein Monitor hat eine Bildschirmdiagonale, ein Seitenverhältnis (meistens 4:3 bei CRT (z.b. 1024x768), 5:4 bei TFT (1280x1024)) und eine Auflösung, angegeben in DPI (Punkte pro Zoll).

Hast du diese Daten kannst du die Pixelgröße mit einem Dreisatz umrechnen.
AMI Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7
BeitragVerfasst: Mo 24.04.06 18:21 
Die Formel habe ich:

(Pixelanzahl : dpi) x 2,54 = cm


Und ein Beispiel von folgendem Link: 66.249.93.104/search...amp;ct=clnk&cd=1

Beispiel: Ein Digitalfoto wird in der Größe 1.600 x 1.200 Pixel und einer Auflösung von 300 ppi aufgenommen.
Wie groß darf ein Papierausdruck oder Fotoabzug ohne Qualitätsverluste höchstens sein?

(1.600 Pixel : 300 ppi) x 2,54 = 13,5 cm
(1.200 Pixel : 300 ppi) x 2,54 = 10,2 cm

Ok, nun schön und gut, aber mathematisch hilft es mir momentan noch nicht sehr viel weiter.
Da muß mir mal einer auf die Sprünge helfen.

Ich weiß, daß es so sehr schwierig ist, und ich will auch gar nicht darauf beharren, es so zu machen. Eine andere, eventuell, praktischere Möglichkeit wäre auch super :-)


AMI
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Mo 24.04.06 19:57 
Ohne die ganzen Monitordaten einzugeben und die internen Längenangaben auf den Bildschirm umzurechnen wird das nicht zu realisieren sein.
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Di 25.04.06 07:35 
in ALen_mm übergibst Du Deine mm-Angaben,
in AWidth_mm die Gesamtlänge in mm
in AWidth_Pixel die maximale Pixelbreite
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function Len_Pixel (const ALen_mm, AWidth_mm, AWidth_Pixel: Integer): Integer;
begin
  Result := ALen_mm*AWidth_Pixel div AWidth_mm;
end;

dann passen zwar die mm immer in dein Rechteck, das Verhältnis sollte auch stimmen!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
AMI Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7
BeitragVerfasst: Di 25.04.06 08:52 
Hallo,

@spacequide:
Kann ich machen. Die Daten sind ja alle vorhanden, außer den umgerechneten Längenangaben.

@Kroko
Ich werde aus deiner Funktion nicht so recht schlau.
Ein Beispiel:

Monitor Auflösung: 1600 px
Meine From/GUI: 1100 px
X Position: 10000 mm
Y Position: 2000 mm
Länge: 30000 mm
Breite: 1500 mm

Für X wäre es dann: 10000mm * 1600px div 1500mm = 1066 px .
Für Y: 2000mm * 1600px div 1500mm = 2133px

Das sind recht große Angaben. Das kann so ja nicht stimmen.

Danke für eure Hilfe!

Grüße

AMI
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Di 25.04.06 09:10 
Die gesamte Zeichenbreute (zBsp Paint.Width) sei 1024
Die Gesamtlänge in mm sei 30000;

Dann ist die Länge von 2000mm
= 2000mm*1024Pixel div 30000mm
= 2*1024Pixel div 30 (mm kürzt sich heraus)
= 2048Pixel div 30
=68 Pixel

Monitorauflösung wird nicht berücksichtigt!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!