Announcement

Collapse
No announcement yet.

Hintergrundraster bei Bitmap Grafiken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hintergrundraster bei Bitmap Grafiken

    Beim Erzeugen einer Bitmap Grafik unter Delphi mit der Komponente Timage wird der Grafik ein Raster hinterlegt (vermutlich wird der weißer Hintergrund in ein helles Grau umgewandelt). Der Effekt tritt auch erst beim Ausdruck der Grafik mit StretchDraw auf (nicht auf dem Bildschirm) und verschwindet wenn man die Farbtiefe unter Windows von True collor auf 256 Farben stellt.

    Wie bekomme ich eine Grafik mit weißem Hintergrund unabhängig von den Windows 95/98 Einstellungen zustande?

  • #2
    Hi

    Das liegt an der "Scalierung" der Bitmap, als dem "stretchen".

    Versuche mal

    <pre>

    Image1.Picture.Bitmap.HandleType := bmDIB;
    Image1.Picture.Bitmap.PixelFormat := pf24Bit; oder pf8Bit etc.

    </pre>

    Manipuliere also die Propertys "HandleType" oder "PixelFormat" der Bitmap.
    Ansonsten gäbe es noch die Möglichkeit die Bitmap gestretcht in eine andere Bitmap zu "kopieren" und diese dann zu drucken.

    <pre>
    procedure Rescale(ZielBreite, ZielHöhe: Integer; Image: TImage);
    var
    B: TBitmap;
    begin
    B := TBitmap.Create;
    try
    B.Width := ZielBreite;
    B.Height := ZielHöhe;
    with Image.Picture do
    B.Canvas.StretchDraw(Rect(0, 0, B.Width, B.Height), Graphic, Rect(0, 0, Graphic.Width, Graphic.Hight));
    Image.Picture.Assign(B);
    finally
    B.Free;
    end;
    end;

    </pre>

    Gruß Hage

    Comment


    • #3
      Hallo Hagen,
      erst mal vielen Dank für deinen Tip, bin leider nicht eher zum Antworten gekommen.
      Durch das Umkopieren mit StretchDraw (habe übrigens eine Weile an deinem StretchDraw Befehl geknabbert, bei dem Du wohl an CopyRect gedacht hast) in eine neue Bitmap konnte ich fehlende Linien in der Bitmap vermeiden.
      Das Ändern des Pixelformates auf 8 Bit Farbtiefe hat dann auch das Hintergrundraster beseitigt. Leider wird dann im Ausdruck die Originalfarbe der Bitmap verfälscht. Die eigentliche Ursache des Problems wird damit nicht beseitigt. Kann mir jemand einen Tip geben wo ich dazu Infos finden kann.

      Gruß Sigur

      Comment


      • #4
        Hi

        Die Ursache ist ganz simpel:

        Durch die Größenänderungen der Bitmap kommt es im "GDI-Bitmap-Mapper" zu Überlagerungen, bzw. auch Interferenzen genannt. Solltest Du z.B. die Zielgröße der Bitmap mal auf andere Werte setzen wirst Du feststellen das diese "Rasterungen" verschwinden, bzw. in anderer Form auftreten. Dieses Verhalten kann nur auftreten bei Verkleinerungen der Bitmaps. Am besten ist es immer die Größenverhältnisse beizubehalten UND auf ein ohne Rest teilbares Vielfaches zu verkleinern, also aus

        100x200 Pixel wird -> 50x100 -> 25x50 usw.

        Gruß Hage

        Comment

        Working...
        X