Einzelnen Beitrag anzeigen

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