Thema: Delphi Paintbox + Scrollbox ?

Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Paintbox + Scrollbox ?

  Alt 16. Jan 2007, 19:02
Zitat:
Auch ist die Frage: warum zeichnest du ständig neu im MouseMove? Würde es nicht reichen dies nur zu tun, wenn aktiv was verschoben wird
ich zeichne nur neu wenn auch was anklickt wurde das wird hier gemacht:
Delphi-Quellcode:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  // ändernt die Object größe
  Paint2Main.liste.ChangeObjSize(x,y,shift,adding);

  // Verschiebt die angebene Objekte
  if (Paint2main.liste.selobject <> NIL) then begin
    if (adding = true) or ((Paint2main.liste.selobject.pointDrawDown = -1) and (Paint2Main.liste.itemindex > -1)) then begin
      if (adding = true) or ((ssleft in Shift) or (ssRight in Shift)) then begin
        paint2main.MoveObj(x,y);
      end;
    end;
  end;
  mx:=mx; my:=y;
end; // PaintBox1MouseMove
das müste eigentlich in die paint2main mosemove ereignis rein. das stammt noch aus den anfigen vom projekt !

ruft InvalidateRect() eine andre procedure auf als die normale ?(sie ruft ja paint auf ) ?


Zitat:
ClipRect des Canvas der PaintBox
ich verwende keine paintbox(ist mir zu langsamm, habe ein test gemacht: ein projekt mit paintbox und eins mit panel, das betreffen projekt ist im anhang die projekte wurden mit lazarus erstellen sollten aber nach wenigen änderungen mit delphi komplieren können !)

Edit1:
im prinzip geht es jetzt, ich mache es jetzt so:
ich zeichne ja ein hintergrund objekt das habe ich führer ständig neugezeichnet ich zeichne es einfach einmal in eine hilfes bitmap und Kopirer den inhalt auf den bildschirm bzw. in einen zweite bitmap...

das problem ist jetzt sobalt ich die größe änder und damit fertig bin wird das gesammte bild kopiert.... und das dauert wenn ich bei einer grafik von 10000X10000 aber dafür läuft dann das verschieben schnell soablt er alles kopiert hat....

edit2:
ich habe probleme mit ClipRect von der scrollbox und zwar folgednen code:
Delphi-Quellcode:
  Paint2main.liste.AktivDocument.sf:=(PageControl2.ActivePage.Controls[0] as TScrollBox).canvas.ClipRect;
  with Paint2main.liste.AktivDocument do
  Screen.Forms[0].caption:=IntTostr(sf.left) + '\' + intTostr(sf.top) + '\' + IntTostr(sf.Right) + '\'+ intTostr(sf.Bottom);
die größe der scrollbox ist alclient.... wenn ich jetzt die größe des panels ändere und zwar auf 10000X10000 pixel kommt nach 2000 pixel eine schwarze line und danach kann ich nicht mehr zeichnen..... ich vermute der fheler liegtan clipRect der obben gennnante code wird bei mosueDown ausgefürht !

edit3:
jetzt hänge ich bei
Delphi-Quellcode:
           r1.left:=Position.x;
           r1.top:=Position.y;
           r1.Bottom:=Size.x-position.x;
           r1.Right:=Size.y-position.y;

           with liste.AktivDocument do
      Screen.Forms[0].caption:=IntTostr(sf.left) + '\' + intTostr(sf.top) + '\' + IntTostr(sf.Right) + '\'+ intTostr(sf.Bottom);

           if (visible = true) and (IntersectRect(r2,liste.AktivDocument.sf,r1) = true) then begin
in sf clipRect gespeichert.
wenn ich den teil rausnehme: and (IntersectRect(r2,liste.AktivDocument.sf,r1) = true) geht es wunder bar
nur ich würde drotzdem gerne wissen wie ich es schaffen kann das nur die sichtbaren objekte gezeichnet werden
Angehängte Dateien
Dateityp: zip testproklete_270.zip (114,7 KB, 31x aufgerufen)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat