256色图象的剪贴板拷贝(100分)

  • 主题发起人 主题发起人 along
  • 开始时间 开始时间
A

along

Unregistered / Unconfirmed
GUEST, unregistred user!
windows98的显示属性里设置为24真彩色。现要在程序中实现256色图象
的拷贝,剪切和粘贴。但是用clipboard.assign(clipbmp)和pastebmp.
assign(clipborad)实现不了此功能。(clipbmp,pastebmp皆为256色tbitmap)。急!



 
试试Bmp.PixelFormat:=pf8bit;把图象转成8bit,即256色
 
Town,你说的我已试过,但调色板要出错。怎样防止调色板出错呢?
 
我试验了一下,真彩复制、粘贴也没问题呀。转成256色也一样有效呀!

procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
begin
{Bmp:=TBitmap.Create;
Bmp:=Image1.Picture.Bitmap;
Bmp.PixelFormat:=pf8bit;
Clipboard.Assign(Bmp); }{这段是转成256色的}

Clipboard.Assign(Image1.Picture.Bitmap);{这是直接真彩copy的}
end;
procedure TForm1.pasteClick(Sender: TObject);
var
Bitmap: TBitmap;
begin
if Clipboard.HasFormat(CF_BITMAP) then
begin
Bitmap := TBitmap.Create;
try
Bitmap.Assign(Clipboard);
Image2.Canvas.Draw(0, 0, Bitmap);
finally
Bitmap.Free;
end;

end;

end;
 

procedure TForm1.pasteClick(Sender: TObject);
var Bitmap: TBitmap;
begin
if Clipboard.HasFormat(CF_BITMAP) then
begin
Bitmap := TBitmap.Create;
try
Bitmap.Assign(Clipboard);
Image2.Canvas.Draw(0, 0, Bitmap);
finally ~~~~~~~~~这里的Bitmap为真彩色,不是256色
Bitmap.Free;
end;
end;
end;

 

procedure TForm1.pasteClick(Sender: TObject);
var Bitmap: TBitmap;
begin
if Clipboard.HasFormat(CF_BITMAP) then
begin
Bitmap := TBitmap.Create;
try
Bitmap.Assign(Clipboard);
Image2.Canvas.Draw(0, 0, Bitmap);
finally ~~~~~~~~~这里的Bitmap为真彩色,不是256色
Bitmap.Free;
end;
end;
end;

 
那么在 Bitmap.Assign(Clipboard);
之后再加上一句Bitmap.PixelFormat:=pf8bit;
不就行了吗?
我想知道你是做什么用的? 我觉得很有趣 :)
 
接受答案了.
 
后退
顶部