在Image上已经存在一个点或者其他图形(例如,一个实心矩形),如何在image上画图而不覆盖原先的图像,即原先图像与现在的图像以不同颜色显示呢?
有用过泰兴OMR卡格式设计器的吗?就像在图像上加上一个组,而原先的图像(即每个点)依然能够看得到.
还有一个问题:怎么能让鼠标按下时能够显示出鼠标的显示范围,当鼠标up时画出这个矩形区域呢?
如果想删除这个矩形,怎么办?其实要做的目的就像泰兴的卡格式设计器,首先设定同步头数和列数,然后能够自动根据这两个数据,绘制出图像(同步头和一些点),能够让用户用鼠标选择一个区域,设定这个区域的属性,象组号,取值范围(是英文字符,还是阿拉伯数字,还是二进制数据)等等

解决方案 »

  1.   

    //任意两个点间画线,第一次画线,第二次调用擦线
    procedure drowline();
    var
      pt: array[0..1] of TPoint;
    begin
      pt[0] := Point(10,10);
      pt[1] := Point(50,50);  image1.Canvas.Pen.Mode:=pmxor;
      image1.Canvas.Pen.Color := clblue;
      image1.Canvas.Pen.Width := 2;
      image1.Canvas.Polyline(pt);
    end;pmXor==>Combination of colors in either pen or canvas background, but not both
      

  2.   

    设置Pen的Mode为XOR.
    代码如下:procedure TForm1.Button3Click(Sender: TObject);
    begin
      with Image1.Canvas do
      begin
        Brush.Color := clRed;
        Rectangle(Rect(0, 0, 100, 100));    Pen.Mode := pmXor;
        Rectangle(50, 50, 200, 200);
      end;    
    end;