Bonjour
Je souhaite extraire une region d'un bitmap pour la "strecher" dans le canvas de l'imprimante. J'utilise donc le code suivant :
Et là rien ne se produit : une page vide, blanche ! Par contre si je supprime la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 var source : TBitmap; BitmapHeader: pBitmapInfo; BitmapImage : POINTER; HeaderSize : LONGWORD; ImageSize : LONGWORD; begin try source:=TBitmap.Create; source.HandleType:= bmDIB; source.LoadFromFile('C:\mon bitmap.bmp'); source.PixelFormat:= pf24Bit; Printer.BeginDoc; GetDIBSizes(source.Handle, HeaderSize, ImageSize); GetMem(BitmapHeader, HeaderSize); GetMem(BitmapImage, ImageSize); try GetDIB(source.Handle, source.Palette, BitmapHeader^, BitmapImage^); Printer.Canvas.Lock; SetStretchBltMode(Printer.Canvas.Handle,HALFTONE); StretchDIBits(Printer.canvas.Handle, 0, 0, Printer.PageWidth, Printer.PageHeight, 0, 0, source.Width, source.Height, BitmapImage, TBitmapInfo(BitmapHeader^), DIB_RGB_COLORS, SRCCOPY); Printer.Canvas.Unlock; Pinter.EndDoc; finally FreeMem(BitmapHeader); FreeMem(BitmapImage) end; finally source.Free; end;là la page est bien remplie mais le résultat est décevant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetStretchBltMode(Printer.Canvas.Handle,HALFTONE);
J'ai fais la même expérience avec le canvas d'un bitmap que je sauvegarde dans un fichier et même résultat. Donc j'en déduis que ce n'est pas un problème d'imprimante puisque ça le fait aussi sur un canvas de bitmap.
Comment faire pour extraire une portion d'image et l'étirer dans un canevas sans dégradation d'image ?
Si je teste avec 300 ppp (un canvas de 3389x2380 en mode paysage) cela fonctionne. En revanche avec du 600 ppp (un canvas de 6778x4760) le problème apparaît.
Quelqu'un a-t-il une idée ?
Merci pour votre aide
Partager