Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bitmap mit bestimmter DPI erstellen (https://www.delphipraxis.net/134077-bitmap-mit-bestimmter-dpi-erstellen.html)

TUX_der_Pinguin 15. Mai 2009 07:52


Bitmap mit bestimmter DPI erstellen
 
Hi DPler,

ich bastel mal wieder an einem Rave Projekt rum, ich habe einen Report mit einer Bitmap Komponente desen größe ist 180mm x 125 mm
jetzt möchte ich ein Bild an diese Komponente übergeben, dazu erstelle ich ein Bitmap und fange an darauf "rum zu malen". Alles
wunderbar jetzt geht es nur um die größe des Bitmaps. Erstell ich ein Bitmap so hat dieses Bitmap 96 DPI aber das ist zu
wenig, das Bild sieht nachher total pixelig aus, darum dachte ich ich erstelle das Bild mit 600 DPI.

Will ich also ein Bild mit der größe 18 x 12,5 cm bei 600 Dpi haben so muß dieses 4252 x 2953 pixel groß sein.
Die Formel dazu lautet pixel = mm * (dpi / 25,4), Beispiel: 4252 = 180 * (600 / 25,4).

Alles kein Problem nur hat mein erstelltes Bild immer noch eine Dpi von 96 und nicht 600. Ich brauche ein Bitmap oder
irgendeine Zeichenfläche die ich mit 600 Dpi erstellen kann, anschließend auf 1/10 mm Einteilung einstellen kann.
Um darauf in mm Angaben zu zeichnen. Damit ich direkt erblicken kann wie groß wird das was ich zeichne auf dem Report.


Mein bisheriger Versuch:
Delphi-Quellcode:
 Bitmap := TBitmap.Create;
  try
    try
      //Farbtiefe
      Bitmap.PixelFormat := pf4bit;

      //Größe des Bitmaps
      Bitmap.SetSize(Round(180 * (600 / 25.4)), Round(125 * (600 / 25.4)));

      //Bitmap in 1/10 mm Einteilung
      OutDC := Bitmap.Canvas.Handle;
      SetMapMode(OutDC,MM_LOMETRIC);
      GetWindowExtEx(OutDC,w);
      GetViewportExtEx(OutDC,v);
      SetMapMode(OutDC,MM_ANISOTROPIC);
      SetWindowExtEx(OutDC,w.cx,w.cy,nil);
      SetViewPortExtEx(OutDC,v.cx,-v.cy,nil);

      //Ränder-Einstellungen
      L_Margin := 0;
      T_Margin := 0;

      //Der Teil wird nicht benötigt, da es keinen Mindestrand gibt wie bei einem Drucker
      //OffSetX := GetDevicecaps(OutDC,PHYSICALOFFSETX) / GetDevicecaps(OutDC,LOGPIXELSX) * 25.4;
      //OffSetY := GetDevicecaps(OutDC,PHYSICALOFFSETY) / GetDevicecaps(OutDC,LOGPIXELSY) * 25.4;
      //L_Margin := LeftMargin - Round((OffSetX*10));
      //T_Margin := TopMargin - Round((OffSetY*10));

      //Bild 1
      With Graph1.Draw Do Begin
        Pos.Left     := L_Margin+50;
        Pos.Top      := T_Margin;
        Pos.Width    := 850;
        Pos.Height   := 550;

        Margin.Top   := 50; {Abstand zum oberen Rand}
        Margin.Left  := 120; {Abstand zum linken Rand}
        Margin.Right := 90; {Abstand zum rechten Rand}
        Margin.Bottom := 50; {Abstand zum unteren Rand}

        Font         := TFont.Create;
        Font.Name    := 'Arial';
        Font.Height  := 32;
        Font.Style   := [];

        LabelDist.X  := 10;
        LabelDist.Y  := 10;

        DPI.Horz     := GetDeviceCaps(OutDC, LOGPIXELSX);
        DPI.Vert     := GetDeviceCaps(OutDC, LOGPIXELSY);
      End;{with Graph1.Draw}

      //Bild 2
      With Graph2.Draw Do Begin
        Pos.Left     := L_Margin+50+870;
        Pos.Top      := T_Margin;
        Pos.Width    := 850;
        Pos.Height   := 550;

        Margin.Top   := 50; {Abstand zum oberen Rand}
        Margin.Left  := 120; {Abstand zum linken Rand}
        Margin.Right := 90; {Abstand zum rechten Rand}
        Margin.Bottom := 50; {Abstand zum unteren Rand}

        Font         := TFont.Create;
        Font.Name    := 'Arial';
        Font.Height  := 32;
        Font.Style   := [];

        LabelDist.X  := 10;
        LabelDist.Y  := 10;

        DPI.Horz     := GetDeviceCaps(OutDC, LOGPIXELSX);
        DPI.Vert     := GetDeviceCaps(OutDC, LOGPIXELSY);
      End;{with}

      //Bild 3
      With Graph3.Draw Do Begin
        Pos.Left     := L_Margin+50;
        Pos.Top      := T_Margin+570;
        Pos.Width    := 1720;
        Pos.Height   := 550;

        Margin.Top   := 50; {Abstand zum oberen Rand}
        Margin.Left  := 120; {Abstand zum linken Rand}
        Margin.Right := 90; {Abstand zum rechten Rand}
        Margin.Bottom := 50; {Abstand zum unteren Rand}

        Font         := TFont.Create;
        Font.Name    := 'Arial';
        Font.Height  := 32;
        Font.Style   := [];

        LabelDist.X  := 10;
        LabelDist.Y  := 10;

        DPI.Horz     := GetDeviceCaps(OutDC, LOGPIXELSX);
        DPI.Vert     := GetDeviceCaps(OutDC, LOGPIXELSY);
      End;{with}

      //Grafik zeichnen...
      pGraph_Draw(Bitmap.Canvas, True);

      //Speichern...
      Bitmap.SaveToFile(glLocalAppDir+'bla.bmp');

      //Bild in Report laden...
      MemStream := TMemoryStream.Create;
      try
        Bitmap.SaveToStream(MemStream);
        Connection.WriteBlobData(MemStream.Memory^, MemStream.Size);
      finally
        MemStream.Free;
      end;

    except
      on EOutOfResources do begin
        Application.MessageBox(PAnsiChar(fGetText(10212)), PAnsiChar(fGetText(MSG_ERROR)), 48);
        //Close;
      end;
    end;{try..except}

  finally
    Bitmap.Free;
  end;{try..finally}

Klaus01 15. Mai 2009 08:01

Re: Bitmap mit bestimmter DPI erstellen
 
Guten Morgen,

ein Bild hat keine dpi.
Die Dimension eines Bildes wird in Pixel angegeben.

Die Dots per Inch kommen ins Spiel wenn Du das Bild ausgeben willst.
Der Bildschirm hat in der Regel 96DPI ein Drucker 300dpi oder mehr.

Grüße
Klaus

TUX_der_Pinguin 15. Mai 2009 08:06

Re: Bitmap mit bestimmter DPI erstellen
 
Zitat:

Zitat von Klaus01
Guten Morgen,

ein Bild hat keine dpi.
Die Dimension eines Bildes wird in Pixel angegeben.

Die Dots per Inch kommen ins Spiel wenn Du das Bild ausgeben willst.
Der Bildschirm hat in der Regel 96DPI ein Drucker 300dpi oder mehr.

Grüße
Klaus

Das weiß ich, nur wieso gibt dann ein ShowMessage(IntToStr(GetDevicecaps(OutDC,LOGPIXELS X))); 96 aus wenn ein Bitmap eigentlich
keine DPI hat. Desweiteren will ich in einem Bild welches aus Pixel besteht etwas zeichnen mit Angaben in mm oder cm, so brauche
ich doch immer die Information Dpi, damit ich weiß wie viele Pixel sind den jetzt 1 cm z.B.

DeddyH 15. Mai 2009 08:09

Re: Bitmap mit bestimmter DPI erstellen
 
Schau Dir mal SetMapMode an.

Klaus01 15. Mai 2009 08:10

Re: Bitmap mit bestimmter DPI erstellen
 
Zitat:

Zitat von TUX_der_Pinguin
Zitat:

Zitat von Klaus01
Guten Morgen,

ein Bild hat keine dpi.
Die Dimension eines Bildes wird in Pixel angegeben.

Die Dots per Inch kommen ins Spiel wenn Du das Bild ausgeben willst.
Der Bildschirm hat in der Regel 96DPI ein Drucker 300dpi oder mehr.

Grüße
Klaus

Das weiß ich, nur wieso gibt dann ein ShowMessage(IntToStr(GetDevicecaps(OutDC,LOGPIXELS X))); 96 aus wenn ein Bitmap eigentlich
keine DPI hat. Desweiteren will ich in einem Bild welches aus Pixel besteht etwas zeichnen mit Angaben in mm oder cm, so brauche
ich doch immer die Information Dpi, damit ich weiß wie viele Pixel sind den jetzt 1 cm z.B.

Weil GetDeviceCaps Information des Ausgabegerätes ausgibt und nicht des Bitmaps.
Und dein Monitor hat 96dpi.

Grüße
Klaus

DeddyH 15. Mai 2009 08:11

Re: Bitmap mit bestimmter DPI erstellen
 
Genau. Eine Bitmap hat x * y Pixel, in welcher Auflösung die ausgegeben werden, ist Sache des Ausgabegerätes.

TUX_der_Pinguin 15. Mai 2009 08:19

Re: Bitmap mit bestimmter DPI erstellen
 
Ja aber was tu ich dann um ein Bild mit 18 x 12,5 cm zu bekommen auf dem ich rum zeichnen kann in mm Angaben, um dieses
Bild an meinen Report zu übergeben. Also ist das nicht möglich oder was. Ich frage mich wie das Photoshop und co. machen
in einem Bildbearbeitungsprogramm kann ich doch ein Bild mit beliebiger DPI erstellen.

Klaus01 15. Mai 2009 08:35

Re: Bitmap mit bestimmter DPI erstellen
 
.. Du musst wissen auf welchen Medium (und desssen dpi) Dein Report ausgegeben wird.
Wenn Dein Report auf dem Bildschirm ausgegeben werden soll,
dann kannst Du mit den ermittelten 96dpi rechnen.
Wenn Dein Report auf dem Drucker ausgegeben werden soll solltest
Du mit den dpi des Druckers rechnen.

Grüße
Klaus

Medium 15. Mai 2009 10:21

Re: Bitmap mit bestimmter DPI erstellen
 
Zitat:

Zitat von Klaus01
.. Du musst wissen auf welchen Medium (und desssen dpi) Dein Report ausgegeben wird.

Auf mir wird nix ausgegeben! :shock:


Letztlich musst du einfach wissen mit wie viel DPI du es nachher zu tun hast. Wenn du das weisst, dann brauchst du um 1cm in einem Bitmap abzubilden DPI/2,54 Pixel.

Ein 18x12,5cm Bild müsste auf einem 600DPI Drucker also mit einem Bitmap mit 18*600/2,54 x 12,5*600/2,54 ~= 4252x2953 Pixeln erstellt werden um die volle Auflösung zu nutzen.

TUX_der_Pinguin 15. Mai 2009 11:09

Re: Bitmap mit bestimmter DPI erstellen
 
Zitat:

Zitat von Klaus01
.. Du musst wissen auf welchen Medium (und desssen dpi) Dein Report ausgegeben wird.
Wenn Dein Report auf dem Bildschirm ausgegeben werden soll,
dann kannst Du mit den ermittelten 96dpi rechnen.
Wenn Dein Report auf dem Drucker ausgegeben werden soll solltest
Du mit den dpi des Druckers rechnen.

Grüße
Klaus


Ahja und wieso kann ich ein Bitmap in einem Grafikprogramm erzeugen mit einer bestimmten DPI zahl,
da gebe ich auch nirgendwo an auf welchem Medium es landet.

Zweitens der Report soll entweder gedruckt oder als PDF erzeugt werden, und selbst wenn ich weiß
welche DPI der Drucker hat wie erzeuge ich dann das Bitmap? Und die DPI eines PDFs ist sicherlich
auch nicht greifbar und selbst wenn weiß ich immer noch nicht wie ich dieses Bitmap im Speicher generieren soll
mit der entsprechenden größe. Ich kann ja schlecht erst auf "Printer.Canvas" etwas zeichnen und es dann in mein
Bitmap kopieren, was sowieso nicht gehen soll da ich irgendwo gelesen habe Printer.Canvas ist nur beschreibbar
nicht lesbar.

Um es noch mal ganz einfach zu erklären, ich möchte eine Linie zeichnen von ca. 2 cm länge oder breite wie auch immer.
Diese Linie soll auf einem Report erscheinen die dafür vorgesehene Fläche beträgt 18 x 12,5 cm. Und dafür sind 96 DPI
einfach zu wenig, ich brauche mehr Details da es um ein Koordinaten system mit einer Kurve und Skalenstrichen etc. geht.



Zitat:

Zitat von Medium
Letztlich musst du einfach wissen mit wie viel DPI du es nachher zu tun hast. Wenn du das weisst, dann brauchst du um 1cm in einem Bitmap abzubilden DPI/2,54 Pixel.

Ein 18x12,5cm Bild müsste auf einem 600DPI Drucker also mit einem Bitmap mit 18*600/2,54 x 12,5*600/2,54 ~= 4252x2953 Pixeln erstellt werden um die volle Auflösung zu nutzen.

Siehe mein 1. Posting dort habe ich schon geschrieben das das Bitmap eine größe von ca. 4252x2953 Pixeln haben muß.

DeddyH 15. Mai 2009 11:13

Re: Bitmap mit bestimmter DPI erstellen
 
Was heißt denn DPI? Dots Per Inch, also Pixel pro Zoll. Du kannst ja nur die Pixel festlegen und nicht, wieviele davon in einem Zoll dargestellt werden, das ist Sache des Ausgabegeräts.

Mithrandir 15. Mai 2009 11:26

Re: Bitmap mit bestimmter DPI erstellen
 
Zitat:

Zitat von TUX_der_Pinguin
Ahja und wieso kann ich ein Bitmap in einem Grafikprogramm erzeugen mit einer bestimmten DPI zahl,
da gebe ich auch nirgendwo an auf welchem Medium es landet.

Boah, immer diese Klugscheißer. :wall: Du gibts auch nicht das Medium an, sondern die Zahl der DPI und die Größe der Zeichenfläche. Daraus kann man (=Photoshop, Gimp, wer-auch-immer) die Größe des Bildes in Pixel berechnen.

Wikipedia: DPI

Zitat:

In Bilddateien in den Formaten BMP, JPG und TIFF ist es möglich, im Dateiheader eine relative Auflösung anzugeben. Nicht alle Programme unterstützen jedoch diese Möglichkeit.
Im Regelfall werden diese aber nicht genutzt. Es ist also lediglich ein mathematisches Problem. Du musst einfach nur hin und her rechnen.

Zitat:

Alles kein Problem nur hat mein erstelltes Bild immer noch eine Dpi von 96 und nicht 600
Nein, dein Bild hat gar keine DPI. Die Werte werden, wie im verlinkten Beitrag gezeigt, selten oder nie in die Datei geschrieben. Es ist Sache des Ausgabegeräts, ob es ein Bild von 32x32 Pixel in einer Breite von 50 cm oder von 5 cm druckt. Wenn man will, dass das Bild bei einer Breite von 50 cm genau so aussieht (vom Detailreichtum her) wie bei 5 cm, so braucht das Bild eine höhere Auflösung.

Eigentlich ganz logisch.

brechi 15. Mai 2009 12:13

Re: Bitmap mit bestimmter DPI erstellen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Da es um ein Bitmap geht, kann eine DPI Anzahl angegeben werden. Diese kann dann genutzt um auf jedem Ausgabemedium das Bild in der gleiche Größe darzustellen. Es ist halt eine zusätzliche Angabe. Ein Bild mit DPI 96 und 1000 Pixeln hat eben eine Größe von X-cm unabhängig von dem Ausgabemedium.

Genau diese Info kann eben genutzt werden, damit das Bild auf jedem beliebigen Drucker (ob 100DPI oder 1200DPI) gleich groß ausgedruckt wird. Die meisten Bildprogramme nuten das auch.
Siehe Irfanview -> Resize/Resample image -> DPI

Und der Threadersteller will wohl diese Eigenschaft im Bitmap-Header setzen.

Laut
http://www.fastgraph.com/help/bmp_header_format.html
ist es:
38 horizontal resolution in pixels per meter (unreliable)
42 vertical resolution in pixels per meter (unreliable)


Es wird vom Druckertreiber verwendet, folgendes zeigt den Unterschied beim Ausdrucken (beides 100*100 Pixel, einmal 72 oder 96DPI und einmal 300DPI).

@Daniel
"Im Dateiheader eine relative Auflösung anzugeben. Nicht alle Programme unterstützen jedoch diese Möglichkeit"
- "Im Regelfall werden diese aber nicht genutzt."

Sie wird benutzt, kann nur in vielen Programmen nicht angegeben werden. Aber Photoshop, Gimp, Paint.Net etc. unterstützen das. Und dann wirds auch im Ausdruck verwendet.

Medium 15. Mai 2009 14:32

Re: Bitmap mit bestimmter DPI erstellen
 
Die Angabe im Bitmap ist lediglich ein Hinweis, mit dessen Hilfe ein Ausgabemedium das Bild so skalieren kann, dass es so groß (in cm) wird wie es vom Ersteller vorgesehen ist. D.h. du kannst im Grunde dein Bitmap so fein auflösen wie du magst, du musst nur die DPI Einträge entsprechend mit anpassen. Dafür müsstest du wie es scheint an den MSDN-Library durchsuchenBITMAPINFOHEADER heran kommen, der so wie ich das überblicke von der VCL nicht durchgereicht wird. Mit dem Handle (HBITMAP) sollte sich aber etwas anstellen lassen. Hier ist es übrigens keine DPI- sondern Pixels-per-Meter Angabe.
Und dann musst du noch das Glück haben, dass das Bild nachher von einem Programm verwendet wird, dass diese Angabe berücksichtigt.

Am Rande: Dein Ton kommt etwas arg gereizt rüber - nichts womit sich Sympathiepunkte gewinnen lassen :)

TUX_der_Pinguin 19. Mai 2009 10:17

Re: Bitmap mit bestimmter DPI erstellen
 
So nach lagem hin und her und herrumprobieren, habe ich eine lösung gefunden mit der ich zwar nicht ganz zufrieden bin.
Ich habe mein halbes Programm umgestrickt damit es klappt, ich rechne jetzt überall immer selbst die 1/10 mm in Pixel um.

D.h. ich erstelle mein Bitmap mit 18x12,5cm was 4252x2953 Pixeln entspricht. Und zeichne ich eine Linie so sähe das wie folgt aus.

Delphi-Quellcode:
with Bitmap.Canvas do begin
  LineTo(fMmToPx(0, 600), fMmToPx(10, 600));
  MoveTo(fMmToPx(100, 600), fMmToPx(10, 600));
end;
Die funktion fMmToPx():

Delphi-Quellcode:
function fMmToPx(mm, DPI: Integer) : Integer;
begin
  result := Round(((mm / 100) * DPI) / 2.54);
end;
So das ganze klappt jetzt auch soweit, jedoch ist die Grafik noch sehr pixelig, bzw. linien sind nachher je nach Zoom im PDF Reader
nicht sichtbar. Lasse ich das PDF wie früher über einen PDF Drucker erstellen, kommen die linien stärker durch und auch die Texte
sind nicht mehr pixelig.

Ich habe gelesen das ein Bitmap wenn es einem Report übergeben wird als JPEG umgewandelt wird, läßt sich da irgendwas beeinflussen
in Ritung AntiAliasing !?

Oder gibt es irgendwie direkt eine möglichkeit auf einem Report zur Laufzeit zu zeichnen?

TUX_der_Pinguin 19. Mai 2009 11:07

Re: Bitmap mit bestimmter DPI erstellen
 
Ein Versuch die Grafikqualität zu erhöhen. Ich habe einen Versuch gestartet das ganze mit MetaFile umzusetzen, die Qualität
ist da durch auch enorm gestiegen. Jedoch ist das MetaFile auch irgendwie pixelig und nachher im Report/PDF auch.

Die Dateigröße des PDF ist auch viel zu viel, ein Ausdruck mit einem PDF drucker brachte eine Dateigröße von ca. 40 KB
und der Weg über den Rave Report bringt eine Datei mit einer größe von > 400 KB.

Delphi-Quellcode:
procedure TfrmGraph.RvCustConTAGraphGetRow(Connection: TRvCustomConnection);
var
  MemStream  : TMemoryStream;
  DotsPerInch : Word;
  Wmf        : TMetaFile;
  WmfCanvas  : TMetaFileCanvas;

begin
  //init
  DotsPerInch := RvRenderPDF.MetafileDPI;

  Wmf := TMetaFile.Create;
  try
    try
      //Größe
      Wmf.SetSize(fMmToPx(1800, DotsPerInch), fMmToPx(1220, DotsPerInch));
     
      //Zeichenfläche erstellen
      WmfCanvas := TMetaFileCanvas.Create(Wmf, 0);
      try

        //Bild 1
        with Graph1.Draw do begin
          Pos.Left     := fMmToPx(40, DotsPerInch);
          Pos.Top      := fMmToPx(50, DotsPerInch);
          Pos.Width    := fMmToPx(850, DotsPerInch);
          Pos.Height   := fMmToPx(550, DotsPerInch);

          Margin.Top   := fMmToPx(50, DotsPerInch); //Abstand zum oberen Rand
          Margin.Left  := fMmToPx(120, DotsPerInch); //Abstand zum linken Rand
          Margin.Right := fMmToPx(90, DotsPerInch); //Abstand zum rechten Rand
          Margin.Bottom := fMmToPx(50, DotsPerInch); //Abstand zum unteren Rand

          Font         := TFont.Create;
          Font.Name    := 'Arial';
          Font.Height  := fMmToPx(32, DotsPerInch);
          Font.Style   := [];

          LabelDist.X  := fMmToPx(10, DotsPerInch);
          LabelDist.Y  := fMmToPx(10, DotsPerInch);

          DPI.Horz     := DotsPerInch;
          DPI.Vert     := DotsPerInch;
        end;{with Graph1.Draw}

        //Bild 2
        with Graph2.Draw do begin
          Pos.Left     := fMmToPx(870+40, DotsPerInch);
          Pos.Top      := fMmToPx(50, DotsPerInch);
          Pos.Width    := fMmToPx(850, DotsPerInch);
          Pos.Height   := fMmToPx(550, DotsPerInch);

          Margin.Top   := fMmToPx(50, DotsPerInch); //Abstand zum oberen Rand
          Margin.Left  := fMmToPx(120, DotsPerInch); //Abstand zum linken Rand
          Margin.Right := fMmToPx(90, DotsPerInch); //Abstand zum rechten Rand
          Margin.Bottom := fMmToPx(50, DotsPerInch); //Abstand zum unteren Rand

          Font         := TFont.Create;
          Font.Name    := 'Arial';
          Font.Height  := fMmToPx(32, DotsPerInch);
          Font.Style   := [];

          LabelDist.X  := fMmToPx(10, DotsPerInch);
          LabelDist.Y  := fMmToPx(10, DotsPerInch);

          DPI.Horz     := DotsPerInch;
          DPI.Vert     := DotsPerInch;
        end;{with}

        //Bild 3
        with Graph3.Draw do begin
          Pos.Left     := fMmToPx(40, DotsPerInch);
          Pos.Top      := fMmToPx(570+50, DotsPerInch);
          Pos.Width    := fMmToPx(1720, DotsPerInch);
          Pos.Height   := fMmToPx(550, DotsPerInch);

          Margin.Top   := fMmToPx(50, DotsPerInch); //Abstand zum oberen Rand
          Margin.Left  := fMmToPx(120, DotsPerInch); //Abstand zum linken Rand
          Margin.Right := fMmToPx(90, DotsPerInch); //Abstand zum rechten Rand
          Margin.Bottom := fMmToPx(50, DotsPerInch); //Abstand zum unteren Rand

          Font         := TFont.Create;
          Font.Name    := 'Arial';
          Font.Height  := fMmToPx(32, DotsPerInch);
          Font.Style   := [];

          LabelDist.X  := fMmToPx(10, DotsPerInch);
          LabelDist.Y  := fMmToPx(10, DotsPerInch);

          DPI.Horz     := DotsPerInch;
          DPI.Vert     := DotsPerInch;      
        end;{with}

        //Grafik zeichnen...
        pGraph_Draw(WmfCanvas, False, True);

      finally
        WmfCanvas.Free;
      end;

      Wmf.SaveToFile(glLocalAppDir+'bla.wmf'); //Die Datei ist ca. 507 KB groß

      //Bild in Report laden...
      MemStream := TMemoryStream.Create;
      try
        Wmf.SaveToStream(MemStream);
        Connection.WriteBlobData(MemStream.Memory^, MemStream.Size);
      finally
        MemStream.Free;
      end;

    except
      on EOutOfResources do begin
        Application.MessageBox(PAnsiChar(fGetText(10212)), PAnsiChar(fGetText(MSG_ERROR)), 48);
        //Close;
      end;
    end;{try..except}

  finally
    Wmf.Free;
  end;{try..finally}

end;

TUX_der_Pinguin 19. Mai 2009 11:08

Re: Bitmap mit bestimmter DPI erstellen
 
Eintrag doppelt!

TUX_der_Pinguin 19. Mai 2009 11:23

Re: Bitmap mit bestimmter DPI erstellen
 
Eintrag doppelt


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 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