AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildskalierung beim Ausdruck stimmt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Bildskalierung beim Ausdruck stimmt nicht

Ein Thema von easywk · begonnen am 22. Sep 2005 · letzter Beitrag vom 22. Sep 2005
 
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#1

Bildskalierung beim Ausdruck stimmt nicht

  Alt 22. Sep 2005, 14:25
Moin, moin,

irgendwie bin ich scheinbar zu bloede, eine Grafik vernuenftig auszudrucken. Mal kurz zur Problemstellung: ich habe eine Grafik in einer Datei (200x150 Pixel). Wenn ich die beispielsweise mit meinem Bildbearbeitungsprogramm bei 100% Skalierung ausdrucke, dann habe ich ein ansehnliches Bild von einigen Zentimetern. Nun versuche ich das Ganze mal selber auszudrucken, dazu hier die Codefragmente:
Delphi-Quellcode:
procedure PrintBild(DestRect:TRect; Image:TImage);
var BitmapHeader:pBitmapInfo; BitmapImage:POINTER; Bitmap:TBitmap;
    HeaderSize,ImageSize:DWORD;
begin
  Bitmap := TBitmap.Create;
  try
    Bitmap.Width:=Image.Picture.Width;
    Bitmap.Height:=Image.Picture.Height;
    Bitmap.PixelFormat:=pf24bit;
    // Convert GIF (JPEG, or whatever) to BMP
    Bitmap.Canvas.Draw(0,0, Image.Picture.Graphic);
    GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
    GetMem(BitmapHeader, HeaderSize);
    GetMem(BitmapImage, ImageSize);
    try
      GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
      StretchDIBits(Printer.Canvas.Handle,
                    DestRect.Left, DestRect.Top, // Destination Origin
                    DestRect.Right - DestRect.Left, // Destination Width
                    DestRect.Bottom - DestRect.Top, // Destination Height
                    0, 0, // Source Origin
                    Bitmap.Width, Bitmap.Height, // Source Width & Height
                    BitmapImage,
                    TBitmapInfo(BitmapHeader^),
                    DIB_RGB_COLORS,
                    SRCCOPY)
    finally
      FreeMem(BitmapHeader);
      FreeMem(BitmapImage)
    end
  finally;
    Bitmap.Free;
  end;
end;

procedure PrintImage(Filename:STRING);
var Img:TImage; Rect:TRect;
begin
  Img:=TImage.Create(NIL);
  Img.Picture.LoadFromFile(Filename);
  Rect.Top:=10;
  Rect.Bottom:=10+Img.Height;
  Rect.Left:=10;
  Rect.Right:=10+Img.Width;
  PrintBild(Rect,Img);
  Img.Free;
end;
Und was passiert? Ich bekomme ein Minibild von ein paar Millimetern Breite. Kann mir das jemand erklären?

cu
easywk
Björn
if all else fails - read the instructions
  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 07:53 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