定制了一些功能线
要求在使用画笔绘图时不要覆盖功能线
需要怎样定制功能线
才能使功能线生成后使用画笔绘图不会覆盖功能线
下面是功能线生成代码:
procedure TfrmNewImg.DrawOptionLine;
var
i:longint;
ccode:TColorCode;
x:Longint;
y:Longint;
y1:longint;
begin
x := 4+39-1;
y := 34;
y1 := m_Bmp.Height; with m_Bmp.Canvas do
begin
for i:= 1 to 20 do
begin
ccode := m_ColorCodeList.ColorCodeOf(i);
Pen.Color := ccode.Color;
MoveTo(x,y);
LineTo(x,y1);
dec(x,2);
end; x := m_Bmp.Width -(4+39);
for i := 1 to 20 do
begin
ccode := m_ColorCodeList.ColorCodeOf(i);
Pen.Color := ccode.Color;
MoveTo(x,y);
LineTo(x,y1);
inc(x,2);
end; ccode := m_ColorCodeList.ColorCodeOf(1);
Pen.Color := ccode.Color;
MoveTo(43,32);
LineTo(43 + 14 + m_DataWidth,32); ccode := m_ColorCodeList.ColorCodeOf(edtStartPin.Value );
SetPixel(Handle,41,32,ccode.Color);
end;
end;
要求在使用画笔绘图时不要覆盖功能线
需要怎样定制功能线
才能使功能线生成后使用画笔绘图不会覆盖功能线
下面是功能线生成代码:
procedure TfrmNewImg.DrawOptionLine;
var
i:longint;
ccode:TColorCode;
x:Longint;
y:Longint;
y1:longint;
begin
x := 4+39-1;
y := 34;
y1 := m_Bmp.Height; with m_Bmp.Canvas do
begin
for i:= 1 to 20 do
begin
ccode := m_ColorCodeList.ColorCodeOf(i);
Pen.Color := ccode.Color;
MoveTo(x,y);
LineTo(x,y1);
dec(x,2);
end; x := m_Bmp.Width -(4+39);
for i := 1 to 20 do
begin
ccode := m_ColorCodeList.ColorCodeOf(i);
Pen.Color := ccode.Color;
MoveTo(x,y);
LineTo(x,y1);
inc(x,2);
end; ccode := m_ColorCodeList.ColorCodeOf(1);
Pen.Color := ccode.Color;
MoveTo(43,32);
LineTo(43 + 14 + m_DataWidth,32); ccode := m_ColorCodeList.ColorCodeOf(edtStartPin.Value );
SetPixel(Handle,41,32,ccode.Color);
end;
end;
但可把功能线画的image层设置为top层(而不是背景),但让此层顶层保持透明,
这样一来就无须copy了.
(为了看得清楚,可以先将Image1整个设置为白底.)Image2放在其上,设置成透明,用来画功能线,红色;
(为了看清上下关系,可将红线设置为粗线条)然后你在Image1上无论怎样画图(矩形或椭圆),都不会覆盖红色的功能线.
TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy,
pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge,
pmNotMerge, pmMask, pmNotMask, pmXor, pmNotXor);
画布本来就分了三层,再加一层更复杂
而且画布类是自定义的,不是可视化控件
要把它放在最上层不会调用(有哪位前辈会的话,还请指教)
现在思路是在功能线区域使用画笔
奇数行画,偶数行不画这个怎么实现
还请各位前辈指教!