AGB  ·  Datenschutz  ·  Impressum  







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

Schwarzer Rand beim Zeichnen

Ein Thema von Prototypjack · begonnen am 1. Feb 2008 · letzter Beitrag vom 27. Aug 2008
Antwort Antwort
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#1

Schwarzer Rand beim Zeichnen

  Alt 1. Feb 2008, 13:16
Moin,

Ich bin's wieder mit meinem Vista-Projekt (zur Erleichterung der Arbeit mit Vista und < D2007).

Also nochmal kurz ein Rückblick: Ich hooke die Paint-Methode von bestimmten WinControls und geben Ihnen folgenden Code:

Delphi-Quellcode:
var
  DC, MemDC: HDC;
  PS: TPaintStruct;
  PaintBuffer: HPAINTBUFFER;
begin
  if ((Message.Msg = WM_PAINT) and FOwner.DoubleBuffered
    and CompositionServices.CompositionEnabled) then
  begin
    begin
      DC := BeginPaint(FOwner.Handle, PS);
      try
        PaintBuffer := BeginBufferedPaint(DC, PS.rcPaint, BPBF_TOPDOWNDIB, nil, MemDC);
        FOwner.Perform(WM_ERASEBKGND, MemDC, MemDC);
        FOwner.Perform(WM_PRINTCLIENT, MemDC, PRF_CLIENT);
        if not Self is TCustomForm then
        begin
          BufferedPaintSetAlpha(PaintBuffer, @PS.rcPaint, 255);
        end;
        EndBufferedPaint(PaintBuffer, True);
      finally
        EndPaint(FOwner.Handle, PS);
      end;
    end
  end
  else
  begin
    FOldWindowProc(Message);
  end;
Das funktioniert auch super. In der tat funktioniert es sogar zu gut, denn nun haben diese WinControls schwarze Ränder (siehe Anhang).

Hat jemand den Ansatz einer Idee, wie ich das verhindern kann?

Danke & Grüße,
Max
Miniaturansicht angehängter Grafiken
unbenannt_478.jpg  
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Schwarzer Rand beim Zeichnen

  Alt 2. Feb 2008, 18:05
Moin,

Ach kommt schon

So weit daneben kann ich doch gar nicht liegen. Hat keiner eine Idee? Irgendwie muss es doch gehen?

Daniel zeigt, soweit ich mich erinnern kann, in seinem Video eine korrekte Darstellung per DoubleBuffered := True, also muss ich die richtige Methode gehooked haben und auch kann mein Code gar nicht so weit daneben liegen, denn ich bin ja fast beim richtigen Ergebnis.

Wo liegt mein Fehler? Was habe ich vergessen?

Danke & Grüße,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Schwarzer Rand beim Zeichnen

  Alt 4. Feb 2008, 19:33
*push*
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
zahor

Registriert seit: 27. Jun 2006
Ort: im hintersten Winkel des RAMs
182 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Schwarzer Rand beim Zeichnen

  Alt 27. Aug 2008, 12:13
für den fall, dass dein problem nach nem halben jahr immer noch besteht: setzt mal form1.doublebuffered := true Damit ist dein Problem zwar nicht prinzipiell gelöst, aber der Rand ist jetzt weiß^^ Ich hoffe, das ist näher an der Lösung. Wahrscheinlich braucht man aber GDI+...
beim speedbutton gibt's das Problem übrigens nicht
Real Programmers always confuse Christmas and Halloween because Oct31 = Dec25. - Andrew Rutherford
  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 06:33 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