AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Gdi+: Wie Bitmap-Objekt mit Image-Bild verbinden?

Gdi+: Wie Bitmap-Objekt mit Image-Bild verbinden?

Ein Thema von Jazzman_Marburg · begonnen am 22. Mai 2011 · letzter Beitrag vom 23. Mai 2011
Antwort Antwort
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

Gdi+: Wie Bitmap-Objekt mit Image-Bild verbinden?

  Alt 22. Mai 2011, 21:27
Hallo Gemeinde!

Schon wieder ich -- aber ich bin mal wieder im GDI+ Gestrüpp hängengeblieben und hoffe wieder auf eure Hilfe.
In einem TImage habe ich ein Bild von dem ich gern ein Farb-Histogramm (RGB Kanäle) erstellen möchte. Erik van Bilsen hat in seinem GDI+ 1.1 Demo-Programm sogar ein solches Beispiel (s.u.). Dieses Beispiel geht nun davon aus, dass man ein Bitmap-Objekt mit "Bitmap := TGPBitmap.Create('ImageFileSmall.jpg')" erzeugt indem man das File als Parameter übergibt. Und genau hier ist mein Problem: Wie geh ich vor, wenn ich das Bildchen bereits in einer TImage-Komponente habe -- es also zur Laufzeit erzeugt habe, und deshalb kein File als Parameter übergeben kann?
Wie kann ich mein bereits bestehendes Image mit Bitmap vom Typ IGPBitmap verheiraten?
Hier das angesprochene Beispiel -- eigentlich geht es nur um die erste Zeile nach dem Begin:
Delphi-Quellcode:
procedure TDemoHistogram.Run;
var
  Bitmap: IGPBitmap;
  Histogram: IGPHistogram;
  I, J, X, Y, MaxVal: Integer;
  Scale: Double;
  Pen: IGPPen;
begin
  
  Bitmap := TGPBitmap.Create('ImageFileSmall.jpg'); // <-- Hier drum geht es !
  
  Graphics.DrawImage(Bitmap, 10, 10, Bitmap.Width, Bitmap.Height);

  // Retrieve RGB histogram of bitmap
  Histogram := Bitmap.GetHistogram(HistogramFormatRGB);

  // Determine the maximum value in the histogram
  MaxVal := 0;
  for J := 0 to Histogram.ChannelCount - 1 do
    for I := 0 to Histogram.EntryCount - 1 do
      MaxVal := Max(MaxVal, Histogram[J, I]);

  // Scale maximum value so it displays as the height of the bitmap
  Scale := Bitmap.Height / MaxVal;

  // Draw the histogram next to the bitmap
  Pen := TGPPen.Create(0);
  X := 10 + Bitmap.Width + 10;
  Y := 10 + Bitmap.Height;
  for I := 0 to Histogram.ChannelCount - 1 do
  begin
    if (I = 0) then
      Pen.Color := TGPColor.Create(128, 255, 0, 0)
    else if (I = 1) then
      Pen.Color := TGPColor.Create(128, 0, 255, 0)
    else
      Pen.Color := TGPColor.Create(128, 0, 0, 255);

    for J := 0 to Histogram.EntryCount - 1 do
      Graphics.DrawLine(Pen, X + J, Y, X + J, Y - Scale * Histogram[I, J]);
  end;
end;
Habt ihr wohl eine Idee für mich?

Dankeschön & Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#2

AW: Gdi+: Wie Bitmap-Objekt mit Image-Bild verbinden?

  Alt 23. Mai 2011, 22:13
Ok, das Problem habe ich nun mit Streams gelöst
Guckst Du hier: http://www.computerbase.de/forum/sho...=886663&page=2

Trotzdem vielen Dank!

Gruß an alle!
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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