![]() |
z.B. roundrect und das nötige handle
hi, ich hab aus spass einfach mal nen ladebalken simpuliert, sprich mit timer einfach ne varible hochzählen (quasi den fortschritt) und dann den balken inner paintbox malen lassen, funktioniert alles super, aber nur solange ich nen normales rechteck nehme (drect:=rect(x1,y1,x1+f,y2))!
wenn ich beispielsweise roundrect nehme dann möchte er ja noch zusätzlich ein handle übergeben haben. da dachte ich mit dem paintbox-canvas-handle is das eröledigt, aber da kommt dann immer ne fehlermeldung.
Delphi-Quellcode:
tja da kommt die fehlermeldung:
procedure Tform1.ladebalken(f:integer);
var drect:Trect; begin drect:=roundrect(pb.Canvas.Handle,50,50,50+f,70,10,10); pb.Canvas.StretchDraw(drect,bild.Picture.Bitmap); end; Incompatible types: TRect and LongBool was stimmt denn da nicht? gruss haegar |
Re: z.B. roundrect und das nötige handle
Das kann auch nicht gehen.
"Canvas.StretchDraw(Rect, Bitmap);" - Rect gibt die Ecken für das Zeichnen und nicht die Form an. Es ist aber möglich den Zeichnenbereich für alle Zeichenfunktionen einzuschrenken:
Delphi-Quellcode:
Notfalls danach wieder den gesammten Bereich freigeben:
Procedure TForm1.ladebalken(f: Integer);
Var RHandle: HRgn; Begin RHandle := CreateRoundRectRgn(50, 50, 50 + f, 70, 10, 10); SelectObject(pb.Canvas.Handle, RHandle); DeleteObject(RHandle); pb.Canvas.StretchDraw(Rect(50, 50, 50 + f, 70), bild.Picture.BitMap); End;
Delphi-Quellcode:
Procedure TForm1.ladebalken(f: Integer);
Var RHandle: HRgn; Begin RHandle := CreateRoundRectRgn(50, 50, 50 + f, 70, 10, 10); SelectObject(pb.Canvas.Handle, RHandle); DeleteObject(RHandle); pb.Canvas.StretchDraw(Rect(50, 50, 50 + f, 70), bild.Picture.BitMap); RHandle := CreateRectRgn(0, 0, pb.Width, pb.Height); SelectObject(pb.Canvas.Handle, RHandle); DeleteObject(RHandle); ... End; Eine Demo von mir, für's Clipping, findest du dort ![]() |
Re: z.B. roundrect und das nötige handle
jetzt seh ich gar nix mehr!!??
:gruebel: hab den ersten teil so übernommen von dir. [edit=Daniel B]Doppelpost gelöscht. Mfg, Daniel B[/edit] |
Re: z.B. roundrect und das nötige handle
Bereich erstellen:
Delphi-Quellcode:
Kopie an Canvas übergeben:
RHandle := CreateRoundRectRgn(50, 50, 50 + f, 70, 10, 10);
Delphi-Quellcode:
Objekt wieder freigeben:
SelectObject(pb.Canvas.Handle, RHandle);
Delphi-Quellcode:
DeleteObject(RHandle);
Im 3. Post auf der Seite ist das Demo als Download ( ![]() |
Re: z.B. roundrect und das nötige handle
ja ist ja schön und gut, aber ich seh nix. sieht nun wie folgt aus:
Delphi-Quellcode:
procedure Tform1.ladebalken(f:integer);
var RHandle:HRgn; begin RHandle := CreateRoundRectRgn(50, 50, 50 + f, 70, 10, 10); SelectObject(pb.Canvas.Handle, RHandle); pb.Canvas.StretchDraw(Rect(50, 50, 50 + f, 70), bild.Picture.BitMap); DeleteObject(RHandle); end; |
Re: z.B. roundrect und das nötige handle
Liste der Anhänge anzeigen (Anzahl: 1)
Also bei mir geht's.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 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