![]() |
Ausrichtung Bitmap bei FillRect
Hallo,
ich fülle einen rechteckigen Bereich in einem Canvas mit einem Bitmap-Brush 8x8 Pixel. Nun wird dieser scheinbar immer am Canvas-Punkt (0,0) ausgerichtet, nicht aber an der Ecke vom Rechteck. Weiß jemand, wie ich das beieinflussen kann? |
Re: Ausrichtung Bitmap bei FillRect
Na dann gib in der TRect-Struktur doch an, wo es hin soll.
|
Re: Ausrichtung Bitmap bei FillRect
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
http://www.delphipraxis.net/attached_files/demo.gif Die zwei gefüllten Rechtecke sind auf dem gleichen Canvas plaziert und die Füllung wird nur am Canvas ausgerichtet. Ich hatte vergessen zu sagen, das der Effekt natürlich erst bei Kachelung stört... |
Re: Ausrichtung Bitmap bei FillRect
Zeig mal Code. Oder häng ein kleines Demo-Projekt an.
|
Re: Ausrichtung Bitmap bei FillRect
Liste der Anhänge anzeigen (Anzahl: 1)
Klar!
Im Beispiel anbei werden zwei, um zwei Pixel vertikal verschoben, Rechtecke gezeichnet. Deutlich zu sehen ist, dass die Strucktur trotzdem wie eine große Fläche angelegt ist. Ich möchte aber gern den Startpunkt der Kachelung definieren, damit ich auch so versetzte Rechtecke jederzeit identisch füllen kann. |
Re: Ausrichtung Bitmap bei FillRect
Code:
Gruß Hagen
SetBrushOrgEx(
HDC hdc, // handle of device context int nXOrg, // x-coordinate of new origin int nYOrg, // y-coordinate of new origin LPPOINT lppt // points to previous brush origin ); |
Re: Ausrichtung Bitmap bei FillRect
Ums dir einfacher zu machen:
Delphi-Quellcode:
Das "mod 8" kann eventuell nötig sein und sollte genauso groß wie die Bitmap vom Brush sein.
function SetBrushOrg(Canvas: TCanvas; X,Y: Integer): TPoint; overload;
begin if not SetBrushOrgEx(Canvas.Handle, X, Y, @Result) then Result := Point(0, 0); end; function SetBrushOrg(Canvas: TCanvas; P: TPoint): TPoint; overload; begin if not SetBrushOrgEx(Canvas.Handle, P.X, P.Y, @Result) then Result := Point(0, 0); end; // Anwendung mit procedure PaintRectangle(Canvas: TCanvas; X,Y,W,H: Integer); var SaveOrg: TPoint; begin SaveOrg := SetBrushOrg(Canvas, X {mod 8}, Y {mod 8}); try Canvas.Rectangle(X, Y, W, H); finally SetBrushOrg(Canvas, SaveOrg); end; end; Gruß Hagen |
Re: Ausrichtung Bitmap bei FillRect
Super, funktioniert :dancer:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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