procedure TForm1.FormCreate(Sender: TObject);
var
  rgn1,rgn2:hrgn;
  i,j,fsize:integer;
  fstream:tfilestream;
  rgndata: pRGNData;
begin
  rgn1:=createrectrgn(0,0,image1.width,image1.height);
  for i:=0 to image1.height-1 do
  for j:=0 to image1.width-1 do
  with image1.canvas do
  if pixels[j,i]=clred then
  begin
    rgn2:=createrectrgn(j,i,j+1,i+1);
    combinergn(rgn1,rgn1,rgn2,rgn_Xor);
    deleteobject(rgn2);
  end;
  fsize:=getregiondata(rgn1,0,nil);
  getmem(rgndata,fsize);
  getregiondata(rgn1,fsize,rgndata);
  fstream:=tfilestream.Create('e:\dd.dat',fmcreate);
  fstream.Write(rgndata^,fsize);
  fstream.free;
  setwindowrgn(form1.handle,rgn1,true);
  deleteobject(rgn1);
end;

解决方案 »

  1.   

    1使用专业的工具,改变黑色为你想要的颜色
    2使用imglist,设置好长宽和mask的颜色
    3使用speedbutton,设置好mask的颜色
    4。。我不知道了
      

  2.   

    其实只要用API BITBLT并选择适当的参数再用两个TIMAGE做几次AND 和 OR 操作就可以了我在D5DG上看到过类似的做法要不我回去帮你找找
      

  3.   

    设置TBitmap.Transparent为true,再适当设置
    TBitmap.TransparentColor,可做出具有透明效果的Bitmap来。