这段代码显示的是什么?(10分)

  • 主题发起人 主题发起人 3wccdel
  • 开始时间 开始时间
3

3wccdel

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,我看了98年10月已结束讨论的问题“Tbitmap初始化”,我乃DELPHI低手,用了
几幅JPG图,好象显示的东东都一样,分数不多,请高手不吝赐教。代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var x,y : integer;
BitMap : TBitMap;
lplogpal:pMaxLogPalette;//pointer of TMaxLogPalette
p:PByteArray;
Jpg:TJpegImage;
begin
//By Hgubegin
Jpg:=TJpegImage.Create;
// By Hgu
Jpg.LoadfromFile('4.jpg');
//24Bit JPG By Hgu
BitMap := TBitMap.create;
Bitmap.Width:=256;
Bitmap.Height:=256;
Bitmap.PixelFormat:= pf8bit;
GetMem(lpLogPal,sizeof(TLOGPALETTE) + ((255) * sizeof(TPALETTEENTRY)));
lpLogPal.palVersion := $0300;
lpLogPal.palNumEntries := 256;
for x := 0 to 255do
begin
lpLogPal.palPalEntry[x].peRed := x;//没问题了!
lpLogPal.palPalEntry[x].peGreen := x;
lpLogPal.palPalEntry[x].peBlue := x;
end;
Bitmap.Palette := CreatePalette(pLogPalette(lpLogPal)^);//要转换
FreeMem(lpLogPal,sizeof(TLOGPALETTE) + ((255) * sizeof(TPALETTEENTRY)));
for y := 0 to BitMap.Height -1do
begin
P := BitMap.ScanLine[y];
for x := 0 to BitMap.Width -1do
P[x] := Byte(x*y);//这里不类型转换一下也会Range Checking错
end;

canvas.draw(0,0,BitMap);//form.canvas, just for a look:)end;
end;
 
楼上的代码看起来太累,偏又对这问题感兴趣,就给排了版,顺手贴上
procedure TForm1.Button1Click(Sender: TObject);
var x,y : integer;
BitMap : TBitMap;
lplogpal:pMaxLogPalette;//pointer of TMaxLogPalette
p:PByteArray;
Jpg:TJpegImage;
begin
//By Hgubegin
pg:=TJpegImage.Create;
// By Hgu
Jpg.LoadfromFile('4.jpg');
//24Bit JPG By Hgu
BitMap := TBitMap.create;
Bitmap.Width:=256;
Bitmap.Height:=256;
Bitmap.PixelFormat:= pf8bit;
GetMem(lpLogPal,sizeof(TLOGPALETTE) + ((255) * sizeof(TPALETTEENTRY)));
lpLogPal.palVersion := $0300;
lpLogPal.palNumEntries := 256;
for x := 0 to 255do
begin
lpLogPal.palPalEntry[x].peRed := x;//没问题了!
lpLogPal.palPalEntry[x].peGreen := x;
lpLogPal.palPalEntry[x].peBlue := x;
end;
Bitmap.Palette := CreatePalette(pLogPalette(lpLogPal)^);//要转换
FreeMem(lpLogPal,sizeof(TLOGPALETTE) + ((255) * sizeof(TPALETTEENTRY)));
for y := 0 to BitMap.Height -1do
begin
P := BitMap.ScanLine[y];
for x := 0 to BitMap.Width -1do
P[x] := Byte(x*y);//这里不类型转换一下也会Range Checking错
end;

canvas.draw(0,0,BitMap);//form.canvas, just for a look:)end;
end;
 
to zwhc:
感谢你顺手排了版,再请你顺手告诉我显示的是什么?
 
convert .jpg(from file) to .bmp(in memory) and draw it on Canvas
 
接受答案了.
 

Similar threads

I
回复
0
查看
664
import
I
I
回复
0
查看
571
import
I
I
回复
0
查看
665
import
I
I
回复
0
查看
639
import
I
后退
顶部