![]() |
Probleme beim Speichern von geänderten Bitmaps
Hallo erstmal.
Ich hab folgendes Problem: Ich erzeuge ein TBitmap und weiss ein vorhandenes Bitmap zu. Danach führe ich ein GetColorAdjustment auf und ändere auf den gewonnen Werten den Contrast und die Helligkeit. Danach Schreibe ich die geänderten Werte mit SetColorAdjustment wieder ins Bitmap zurück. Wenn ich das in einer TPaintBox mache dann sieht man diese Veränderungen wunderbar. Sobald ich aber auf meinem Bitmap arbeite und das Bild Speicher sind die Änderungen futsch :? . Was muss ich tun damit die Änderungen erhalten bleiben??? Vielen Dank schon mal im voraus. mfg |
Re: Probleme beim Speichern von geänderten Bitmaps
Moin!
Ohne Code ist das ganze schwer nachvollziehbar - poste mal den Teil der Veränderung und wieder anszeigen auf der PaintBox und dann mal das Verändern und Speichern beim TBitmap. MfG Muetze1 |
Re: Probleme beim Speichern von geänderten Bitmaps
Folgende Funktionalität habe ich:
Ich habe ein Bitmap auf dem Kontrast und Helligkeits änderungen geschehen. Dieses Bitmap wird gedruckt. Auch dieser Teil Funktioniert. Aber die Änderungen von Kontrast und Helligkeit werden nicht auf allen Drucker ausgegeben!!! Auf meinem Lokalen Kyocera gehts beim anderen HP Farblaser Drucker wiederum nicht. Hab mal die Folgenden Code für euch: hab ein Printer.Begindoc und ein paar ausgaben: SetStretchBltMode(Handle,HALFTONE);//Das Handle ist von Drucker Canvas GetColorAdjustMent(tmpBM.canvas.Handle,CA); //TmpBM ist ein Bitmap was das original Bild beinhaltet CA.caContrast := Contrast; //der neue Kontrast CA.caBrightness := Brightness;//die neue Helligkeit if((Inverted) or (Options.PrintInverted)) then begin CA.caFlags := CA_NEGATIVE; end; res := SetColorAdjustMent(tmpBM.Canvas.Handle,CA); //Die neuen Werte werden gesetzt if(not res) then MessageDlg('Error ' + IntToStr(GetLastError),mtInformation,[mbOK],0); //************************************************** *************************** // Bitmap drucken: PrintBitmap(Printer.Canvas,rctDest,rctSrc,TmpBM); Printer.enddoc ...danach noch ein paar Speicher Freigaben //hab ich aus dem Netz Kopiert das Bitmap auf das Drucker Canvas procedure PrintBitmap(Canvas: TCanvas; DestRect,SrcRect: TRect; Bitmap: TBitmap); var BitmapHeader: pBitmapInfo; BitmapImage: Pointer; HeaderSize: DWORD; ImageSize: DWORD; begin GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize); GetMem(BitmapHeader, HeaderSize); GetMem(BitmapImage, ImageSize); try GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^); StretchDIBits(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 end {PrintBitmap}; So ich brauch jetzt eine möglichkeit das mein Bild auf allen Druckern gedruckt wird mit Änderungen. Ich dachte mit StretchDIBits hätte ich es geschaft wart aber nicht so :wall: Hoffe ihr könnt mir Helfen :? mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz