Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
Delphi 7 Enterprise
|
Re: Einige Fragen zu graphics32
8. Sep 2005, 23:28
ja das ist ja eben das Problem!
Mit Line() bin ich sehr zufrieden, weil sie auch den letzten Punkt zeichnet und dadurch keine Lücken entstehen. Das habe ich versucht, vorhin zu erklären. Aber bei der Benutzung dieser ZeichenProzedur kommen merkwürdige Fehler auf, sobald der Benutzer außerhalb des erlaubten Bereichs zeichnet. Dies lies sich auch mir der Überprüfung der aktuellen Mausposition nicht vermeiden :-/ Ich weiss überhaupt nicht, was an der Prozedur falsch sein könnte...
Hier alles noch mal von meinem Proggie:
Delphi-Quellcode:
procedure TMain.EingabeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer);
begin
Drawing:= True;
Origin:= Point(X,Y);
TempEbene.Bitmap.MoveTo(X,Y);
Status.Panels[0].Text := Format('Origin: (%d, %d)', [X, Y]);
end;
procedure TMain.EingabeMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer; Layer: TCustomLayer);
begin
if Drawing then
begin
DrawShape(TempEbene,Origin,Point(X,Y));
end;
PosPt:= Point(X,Y);
Status.Panels[1].Text := Format('Current: (%d, %d)', [X, Y]);
end;
procedure TMain.EingabeMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer);
begin
if Drawing then
begin
DrawShape(Arbeitsebene,Origin,Point(X,Y));
Drawing:= False;
end;
end;
procedure TMain.DrawShape(FocusEbene: TBitmapLayer; Anfangspunkt, Endpunkt: TPoint);
begin
with FocusEbene.Bitmap do
begin
PenColor:= clRed32;
Brush.Style := bsclear;
TempEbene.Bitmap.Clear(Color32(0,0,0,0));
case DrawingTool of
dtPen:
begin
ArbeitsEbene.Bitmap.Line(PosPt.X,PosPt.Y,EndPunkt.X,Endpunkt.Y,clRed32,true); //<<<<<<ohne Lücken aber mit ExceptionFehler
// ArbeitsEbene.Bitmap.LineToAS(EndPunkt.X,EndPunkt.Y); <<<<<< mit Lücken
end;
end;
end;
end;
|
|
Zitat
|