AGB  ·  Datenschutz  ·  Impressum  







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

Zeichnen auf MDI-Form...

Ein Thema von bingo72 · begonnen am 4. Okt 2007 · letzter Beitrag vom 8. Okt 2007
 
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#3

Re: Zeichnen auf MDI-Form...

  Alt 5. Okt 2007, 07:27
Hey!!

Bin jetzt schon ein gutes Stück weitergekommen und hab im Netz doch noch wertvolle Tipps gefunden:

Vielleicht mal ein wenig Code:

Im Create mach ich das:
Delphi-Quellcode:
fLogo := imLogo.Picture.Graphic;

  fBkBrush := CreateSolidBrush(GetColor);
  fClientInstance := MakeObjectInstance(MainClientWndProc);
  fPrevClientProc := Pointer (GetWindowLong(ClientHandle, GWL_WNDPROC));
  SetWindowLong(ClientHandle, GWL_WNDPROC, Longint(fClientInstance));
  
  fCanvas := TCanvas.Create;
  fCanvas.Handle := GetDC(ClientHandle);
und im Destroy das...
Delphi-Quellcode:
DeleteObject(fBkBrush);
  ReleaseDC(ClientHandle, fCanvas.Handle);

  fCanvas.Free;
im ClientWindowProc(var Message: TMessage) das:

Delphi-Quellcode:
var
  lDC : HDC;
  lBrushOld : HBRUSH;
begin
  with Message do begin
    case Msg of WM_ERASEBKGND:
      begin
        lDC := TWMEraseBkGnd(Message).DC;
        lBrushOld := SelectObject(lDC, fBkBrush);
        FillRect(lDC, ClientRect, fBkBrush);
        SelectObject(lDC, lBrushOld);
        Result := 1;
      end else begin
        Result := CallWindowProc (fPrevClientProc, ClientHandle, Msg, wParam, lParam);
      end;
    end;
  end;
end;
und zu guter Letzt die DrawBackground-Methode:
Delphi-Quellcode:
var
  lImage : TGraphic;
  lBitmap : TBitmap;
  lLeft : Integer;
  lTop : Integer;
  lRect : TRect;
begin
    if Assigned (fCanvas) then begin
      lLeft := (ClientWidthEx - fBitmap.Width) div 2;
      lTop := (ClientHeightEx - fBitmap.Height) div 2;

      if Assigned (fBitmap.Canvas) then begin
        fCanvas.Draw(lLeft, lTop, fBitmap);
      end;
    end;
end;
Es funktioniert schon recht gut und die Effekte sind so wie ich es mir vorstelle...eigentlich fertig oder??

Naja nicht ganz...wenn ich nämlich die Applikation beende bekomme ich im DrawBackground eine AccessViolation-Exception an der Draw-Position...drum hab ich dort auch schon alles abgetestet, was nil sein könnte??
Vielleicht findet ja wer gleich den Grund??

LG
Thomas
  Mit Zitat antworten Zitat
 


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 00:33 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