AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ausrichtung Bitmap bei FillRect

Ein Thema von Mario · begonnen am 6. Aug 2003 · letzter Beitrag vom 7. Aug 2003
Antwort Antwort
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#1

Ausrichtung Bitmap bei FillRect

  Alt 6. Aug 2003, 15:33
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?
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Ausrichtung Bitmap bei FillRect

  Alt 6. Aug 2003, 15:43
Na dann gib in der TRect-Struktur doch an, wo es hin soll.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Ausrichtung Bitmap bei FillRect

  Alt 6. Aug 2003, 15:55
Zitat von Luckie:
Na dann gib in der TRect-Struktur doch an, wo es hin soll.
Habe ich gemacht, doch dann sah es leider so aus:


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...
Miniaturansicht angehängter Grafiken
demo.gif  
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Ausrichtung Bitmap bei FillRect

  Alt 6. Aug 2003, 16:02
Zeig mal Code. Oder häng ein kleines Demo-Projekt an.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Ausrichtung Bitmap bei FillRect

  Alt 6. Aug 2003, 16:15
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.
Angehängte Dateien
Dateityp: zip testfill.zip (2,6 KB, 8x aufgerufen)
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Ausrichtung Bitmap bei FillRect

  Alt 6. Aug 2003, 17:40
Code:
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
   );
Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Ausrichtung Bitmap bei FillRect

  Alt 6. Aug 2003, 18:33
Ums dir einfacher zu machen:
Delphi-Quellcode:
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;
Das "mod 8" kann eventuell nötig sein und sollte genauso groß wie die Bitmap vom Brush sein.

Gruß Hagen
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Ausrichtung Bitmap bei FillRect

  Alt 7. Aug 2003, 08:13
Super, funktioniert
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz