BitMap immer schwarz [gelöst]

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

BitMap immer schwarz [gelöst]

Beitrag von AlterMann »

Hallo

Ich versuche gerade eine Druckvorschau in mein Programm einzubauen.

Dazu schreibe ich die Druckdaten in den Canvas einer TBitMap und kopiere diesen zuerst in ein Timage und anschließend in den Canvas von Printer.

Funktioniert grundsätzlich, aber bis auf die Stellen wo ich Objekte mit hellem Hintergrund hinkopiere ist sowohl die Ausgabe am Bildschirm (Image) als auch am Drucker schwarz.

Egal was ich vorher auf der Bitmap versucht habe wie zB:

Code: Alles auswählen

 
    VSBitMap := Graphics.TBitMap.Create;
    VSBitMap.Canvas.Brush.Color:=clWhite;
    VSBitMap.Canvas.FloodFill(1,1,clWhite,fsBorder);
 


oder auch:

Code: Alles auswählen

 
    VSBitMap := Graphics.TBitMap.Create;
    VSBitMap.Canvas.Brush.Color:=clWhite;
     VSBitMap.Canvas.FillRect(0,0,VSBitMap.Canvas.Width-1,VSBitMap.Canvas.Height-1);}
 


... alles schwarz.

Welche Kleinigkeit übersehe ich diesmal?
Danke im Voraus
Christian
Zuletzt geändert von AlterMann am Mi 3. Sep 2014, 09:33, insgesamt 1-mal geändert.
Früher war alles besser. Und aus Holz!

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: BitMap immer schwarz

Beitrag von theo »

Ein Bitmap hat erstmal noch keine Dimension.

Code: Alles auswählen

    VSBitMap := Graphics.TBitMap.Create;
    VSBitMap.SetSize(100,100);
    VSBitMap.Canvas.Brush.Color:=clWhite;
    VSBitMap.Canvas.FillRect(0,0,VSBitMap.Width,VSBitMap.Height);   

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: BitMap immer schwarz

Beitrag von AlterMann »

theo hat geschrieben:Ein Bitmap hat erstmal noch keine Dimension.


Hallo Theo

Jetzt hab ich mich schon gefreut, denn ich dachte Du hättest es sofort gefunden.
Aber leider funktioniert das trotzdem nicht.

(In der Routine "vorbereiten" wird xmax, und ymax auf Printer.Canvas.Width und ...Height gesetzt)

Code: Alles auswählen

 
    VSBitMap := Graphics.TBitMap.Create;
    Printer.BeginDoc;
    vorbereiten;
    VSBitMap.SetSize(xmax,ymax);
    VSBitMap.Canvas.Brush.Color:=clWhite;
    VSBitMap.Canvas.FillRect(0,0,VSBitMap.Canvas.Width-1,VSBitMap.Canvas.Height-1);
 
Früher war alles besser. Und aus Holz!

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: BitMap immer schwarz

Beitrag von theo »

Drei Zeilen posten und "den Rest habe ich sonstwo" bringt nix.
So kann man dir nicht helfen.
Mach ein minimales Beispielprojekt welches den Fehler zeigt und reproduzieren lässt.

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: BitMap immer schwarz

Beitrag von AlterMann »

theo hat geschrieben:Drei Zeilen posten und "den Rest habe ich sonstwo" bringt nix.


Da hast Du wohl recht.
Ich hoffe ich kann hier das ganze Projekt hochladen.

Ist bei mir unter WinXP 32bit und Win7 64bit reproduzierbar.

Danke fürs anschauen ...
Dateianhänge
DruckTest.zip
Testprojekt
(369.55 KiB) 104-mal heruntergeladen
Früher war alles besser. Und aus Holz!

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: BitMap immer schwarz

Beitrag von Michl »

Funktioniert bei mir, wenn ich statt Bitmap.Canvas.Width einfach Bitmap.Width (so wie von theo geschrieben) nehme:

Code: Alles auswählen

//  VSBitMap.Canvas.FillRect(0,0,VSBitMap.Canvas.Width-1,VSBitMap.Canvas.Height-1);
  VSBitMap.Canvas.FillRect(0, 0, VSBitMap.Width, VSBitMap.Height);   

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: BitMap immer schwarz

Beitrag von Scotty »

Probier mal

Code: Alles auswählen

VSBitMap.Canvas.Brush.Style:=bsSolid;

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: BitMap immer schwarz

Beitrag von AlterMann »

Michl hat geschrieben:Funktioniert bei mir, wenn ich statt Bitmap.Canvas.Width einfach Bitmap.Width (so wie von theo geschrieben) nehme:


Danke ihr beiden.
Das war's! :D

Ich hab das Weglassen von "Canvas" in Theos Posting übersehen.

@Scotty.

bsSolid hatte ich zuvor schon versucht, hatte allerdings keine Änderung gebracht.

Vielen Dank
Problem gelöst!
Früher war alles besser. Und aus Holz!

Antworten