AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi nonVCL - Bitmap in Bitmap kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

nonVCL - Bitmap in Bitmap kopieren

Ein Thema von turboPASCAL · begonnen am 25. Sep 2005 · letzter Beitrag vom 28. Sep 2005
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

Re: nonVCL - Bitmap in Bitmap kopieren

  Alt 25. Sep 2005, 15:58
Zitat von Olli:
...entweder mußt du wohl ein anderes Flag in BitBlt() einsetzen als SRCCOPY - damit kannst du zwei Bitmaps "mischen".
"Mischen" will ich die Bitmaps nicht.

Zitat von Olli:
Zitat von turboPASCAL:
ImageX.Picture.Assign(MyBitmap);
Das gibt es so ohne VCL nicht.
Ja, ne ist klar. Das sollte ein Beispiel zum Verstäntnis sein, was ich machen möchte.

Zitat von Olli:
Im Grunde macht diese Zuweisung intern nur, daß das alte Handle (und assoziierter Speicher) freigegeben wird und ein neues Handle zugewiesen wird. Es sorgt also im Gegensatz zu einer fälschlichen Direktzuweisung ala "Bitmap1 := Bitmap2" dafür, daß keine Speicherlecks auftreten.
Ja und das möchte ich ohne VCL machen.

Zitat von Flocke:
Wenn's ein STATIC-Element ist dann suchst du vielleicht nach der Meldung MSDN-Library durchsuchenSTM_SETIMAGE.
Das habe ich gesucht.


Doch nun stecke ich wieder fest.
Also ich möchte ein vorhandenes Image (Bitmap) auf einem Dialog durch ein selbst erstelltes (aus einer Bitmap-Resource) ersetzen.

Delphi-Quellcode:
// var ResBitmap: HBITMAP ist global def.
// ResBitmap := LoadBitmap(hInstance, MAKEINTRESOURCE(1));

procedure SetBitmap(hWnd: HWND);
var
  myBitmapDC: HDC;
  ResBitmapDC: HDC;
  myBitmap: HBITMAP;
  hOldBitmap: HBITMAP;
begin
  // DC von DlgItem (Image) holen
  myBitmapDC := GetDC(GetDlgItem(hwnd, IDC_IMG1));
  // DC für ResBitmap erstellen
  ResBitmapDC := CreateCompatibleDC(myBitmapDC);

  // Mem-Bitmap erzeugen
  myBitmap := CreateCompatibleBitmap(myBitmapDC, 32, 32);

  // dem Mem-Bitmap einen DC zuweisen
  SelectObject(myBitmapDC, myBitmap);

  // dem ResBitmap einen DC zuweisen
  hOldBitmap := SelectObject(ResBitmapDC, ResBitmap);

  // Bild von ResBitmap zu Mem-Bitmap kopieren
  BitBlt(myBitmapDC, 0, 0, 32, 32, ResBitmapDC, 0, 0, SRCCOPY);

  // dem DlgItem-Image das neue (Mem)Bitmap senden
  SendDlgItemMessage(hwnd, IDC_IMG1, STM_SETIMAGE, IMAGE_BITMAP, myBitmap);

  SelectObject(ResBitmapDC, hOldBitmap);
  DeleteDC(ResBitmapDC);
  ReleaseDC(GetDlgItem(hwnd, IDC_IMG1), myBitmapDC);
end;
So funktioniert das nicht. Irgendwie habe ich den Durchblick verloren...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  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 19:22 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