AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi GDI+, Grafik temporär abspeichern
Thema durchsuchen
Ansicht
Themen-Optionen

GDI+, Grafik temporär abspeichern

Ein Thema von Interflo · begonnen am 21. Mär 2006 · letzter Beitrag vom 22. Mär 2006
Antwort Antwort
Interflo

Registriert seit: 3. Apr 2005
2 Beiträge
 
#1

GDI+, Grafik temporär abspeichern

  Alt 21. Mär 2006, 18:47
Hallo,

ich beschäftige mich seit kurzem mit der GDI+ und bin auch schon ganz glücklich damit. Allerdings habe ich ein Problem:
Ich lege ein Bitmap an und versuche dort den Inhalt einer TPaintBox zu speichern. Intern in der GDI+ habe ich bisher jedoch keine möglichkeit gefunden dies zu realisieren.

Bisher versuche ich das mit der normalen GDI (vereinfachtes Beisp):
Delphi-Quellcode:
 var
  GrpGraphics: GGraphics;
  GrpTemp: GGraphics;
  BmpTemp: GBitmap;
begin
  try
    GrpGraphics := GGraphics.Create(pbMain.Canvas.Handle);
    BmpTemp := GBitmap.Create(200, 200);
    // Temp. Graphics Object um an den HDC der Bitmap ranzukommen
    GrpTemp := GGraphics.Create(BmpTemp);
    // Bereich aus der PaintBox auf das Bitmap blitten
    BitBlt(GrpTemp.GetHDC, 0, 0, 200, 200, pbMain.Canvas.Handle, 50, 50, SRCCOPY);
    GrpTemp.Free;
    // Bitmap inhalt in die PaintBox zeichnen
    GrpGraphics.DrawImage(BmpTemp, 100, 100);
  finally
    GrpGraphics.Free;
    BmpTemp.Free;
  end;
Dies funktioniert jedoch nicht und ich verstehe nicht wieso?? Es gibt einfach keine Ausgabe.

Danke im Voraus!

mfg flo
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#2

Re: GDI+, Grafik temporär abspeichern

  Alt 22. Mär 2006, 14:17
Da du DCs verwendest, kannst du die Grafiken auch in die normalen Bitmaps kopieren.
Delphi-Quellcode:
uses Graphics;

Bitmap:=TBitmap.Create;
// Bitmap richtig einstellen
Bitmap.PixelFormat:=pf24Bit;
Bitmap.Width:=200;
Bitmap.Height:=200;

BitBlt(Bitmap.Canvas.Handle,0,0,200,200,Dein_DC,50,50,SRCCOPY);

// und irgendwann
Bitmap.Free;
Ach, und ich galaube dein BitBlt-Aufruf ist nicht ganz richtig. Du kopierst die Grafik in ein Bitmap das du gleich danach wieder freigibst.
  Mit Zitat antworten Zitat
Interflo

Registriert seit: 3. Apr 2005
2 Beiträge
 
#3

Re: GDI+, Grafik temporär abspeichern

  Alt 22. Mär 2006, 14:58
Zitat:
Da du DCs verwendest, kannst du die Grafiken auch in die normalen Bitmaps kopieren.
Ich würde aber lieber die Bitmapklasse der GDI+ benutzen.

Zitat:
Ach, und ich galaube dein BitBlt-Aufruf ist nicht ganz richtig. Du kopierst die Grafik in ein Bitmap das du gleich danach wieder freigibst.
Nein, ich gebe nur das Graphics Objekt wieder frei nicht das Bitmap. Das Graphics object ist ja nur zum zeichnen gut, man sagt ihm was man zeichnen will und wenn man es freigibt, zeichnest es alles auf das angegebene Objekt (GrpTemp := GGraphics.Create(BmpTemp)) in dem Falle "BmpTemp".

Das Graphics-Objekt benutze ich ja nur, um den DC von dem Bitmap zu erhalten, da dies in der GDI+ (meines wissens) nicht anders geht.

Danach zeichne ich das Bitmap wieder und kann es ja dann auch wieder freigeben:
Delphi-Quellcode:
GrpGraphics.DrawImage(BmpTemp, 100, 100);
  finally
    GrpGraphics.Free;
    BmpTemp.Free;
  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 01:36 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