Hallo Zusammen,
ich versuche einfache Kreise zu zeichnen auf ein TImageEnVect um dessen Funktionalität mit dem Zoomen zu nutzen.
Die Komponente habe ich auf eine leere Form mit ImageEnVect.Align:= alClient; Standardmäßig hat die Komponente
einen Clientbereicht der etwa 500x500pixel groß ist. Das Problem ist, das die Abmessungen eines Objektes ein Rect
aus Integern besteht. Ich benötige eine Genauigkeit von 0.01mm also multipliziere ich meine Abmessungen mit 100
um integer zu bekommen.
Nun das Problem: Wenn ich Objekte zeichne die in dem Cleintbereich von 500x500 passen funktioniert alles wunderbar.
ich müsst also "nur" den Clientbereicht erweitern und schon wäre mein Problem gelöst.
Interessant ist auch, wenn die linke obere Ecke innerhalb der 500x500 ist, wird das Objekt gezeichnet.
Ist jedoch der linke obere Ecke außerhalb der 500x500 wird es nicht mehr gezeichnet.
Als Beispiel der source:
Hat jemand eine Idee wie der Clientberiecht vergrößert wird? oder gibt es Möglicherweise einen anderen Ansatz?
Es werden mehrere Kreise gezeichnet in einem Bereich von 250x250mm mit einer Auflösung von 1/100mm
Ich möchte damit rein zoomen und sehen ob sich die Kreise berühren. Mein Bereich müsste also 25000 x 25000.
Delphi-Quellcode:
var h:integer;
begin
ImageEnVect1.RemoveAllObjects;
ImageEnVect1.ScaleFactor := 1.0; // macht sicht nicht bemerkbar auch wenn dieser verändert wird. Ich meine, er wird nur für das Bemassen benötigt.
ImageEnVect1.MUnit := ieuMICRONS; //Dito für die Bemassung
//Die Box wird gezeichnet, obwohl das Objekt deutlich grösser als 500x500 ist.
h := ImageEnVect1.AddNewObject;
ImageEnVect1.ObjKind[h] := iekBOX;
ImageEnVect1.SetObjRect(h, Rect(0,
0,
1000000,
1000000));
//Der Keis wird gezeichet da die obere linke Ecke im clientbereicht liegt.
h := ImageEnVect1.AddNewObject;
ImageEnVect1.ObjKind[h] := iekELLIPSE;
ImageEnVect1.SetObjRect(h, Rect(500,
500,
1000,
1000));
//Der Kreis wird nicht gezeichnet, die linke obere Ecke ist ausserhalb des Clientbereichs.
h := ImageEnVect1.AddNewObject;
ImageEnVect1.ObjKind[h] := iekELLIPSE;
ImageEnVect1.SetObjRect(h, Rect(600,
600,
1000,
1000));
Gruß Kostas