如题:
1、有两张图片,一张是红色的点,一张是蓝色的点,两张图片叠加在一起,红色点和蓝色点相交部分变为黑色,怎样在DELPHI中实现?
2、假如有一张图,图中是个黑色的箭头,背景是白色的,用程序产生离子,如何确定离子投影出来的是箭头的图形?如何在delphi中实现?
如图:
http://www.bababian.com/photos/20060215/D2AF3B6E3A5282ABE532AD6403480A6F_500.jpghttp://www.bababian.com/photos/20060124/015F00D558B4D197E0E4FE2DE669BFE2_500.jpg请大家帮帮小弟,先多谢了!

解决方案 »

  1.   

    //第一个问题参考如下代码
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Canvas.CopyMode := cmSrcCopy;
      Canvas.CopyRect(
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height),
        Image1.Picture.Bitmap.Canvas,
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height)
      );  Canvas.CopyMode := cmSrcAnd;
      Canvas.CopyRect(
        Rect(0, 0, Image2.Picture.Bitmap.Width, Image2.Picture.Bitmap.Height),
        Image2.Picture.Bitmap.Canvas,
        Rect(0, 0, Image2.Picture.Bitmap.Width, Image2.Picture.Bitmap.Height)
      );
    end;//第二个问题没看明白,两张图片看不出有什么区别,目标效果图是什么样的?
      

  2.   

    //第二个问题参考如下代码procedure TForm1.Button1Click(Sender: TObject);
    begin
      Image3.Picture.Bitmap.Width := Image1.Picture.Bitmap.Width;
      Image3.Picture.Bitmap.Height := Image1.Picture.Bitmap.Height;
      Image3.Canvas.FillRect(Image3.Canvas.ClipRect);  Image3.Canvas.CopyMode := cmSrcCopy;
      Image3.Canvas.CopyRect(
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height),
        Image1.Picture.Bitmap.Canvas,
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height)
      );  Image3.Canvas.CopyMode := cmNotSrcErase;
      Image3.Canvas.CopyRect(
        Rect(0, 0, Image2.Picture.Bitmap.Width, Image2.Picture.Bitmap.Height),
        Image2.Picture.Bitmap.Canvas,
        Rect(0, 0, Image2.Picture.Bitmap.Width, Image2.Picture.Bitmap.Height)
      );  Image4.Picture.Bitmap.Width := Image1.Picture.Bitmap.Width;
      Image4.Picture.Bitmap.Height := Image1.Picture.Bitmap.Height;
      Image4.Canvas.FillRect(Image3.Canvas.ClipRect);  Image4.Canvas.Brush.Color := $000FFF;
      Image4.Canvas.FillRect(Canvas.ClipRect);
      Image4.Canvas.CopyMode := cmSrcErase;
      Image4.Canvas.CopyRect(
        Rect(0, 0, Image3.Picture.Bitmap.Width, Image3.Picture.Bitmap.Height),
        Image3.Picture.Bitmap.Canvas,
        Rect(0, 0, Image3.Picture.Bitmap.Width, Image3.Picture.Bitmap.Height)
      );  Canvas.CopyMode := cmSrcCopy;
      Canvas.CopyRect(
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height),
        Image1.Picture.Bitmap.Canvas,
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height)
      );  Canvas.CopyMode := cmNotSrcErase;
      Canvas.CopyRect(
        Rect(-1, -1, Image1.Picture.Bitmap.Width - 1, Image1.Picture.Bitmap.Height - 1),
        Image4.Picture.Bitmap.Canvas,
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height)
      );  Canvas.CopyMode := cmNotSrcErase;
      Canvas.CopyRect(
        Rect(+1, +1, Image1.Picture.Bitmap.Width + 1, Image1.Picture.Bitmap.Height + 1),
        Image4.Picture.Bitmap.Canvas,
        Rect(0, 0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height)
      );
    end;