如何用API实现CANVAS.PEN.MODE:=PMNOTXOR的功能?(100分)

  • 主题发起人 主题发起人 小ゆ鱼ゆ儿
  • 开始时间 开始时间

小ゆ鱼ゆ儿

Unregistered / Unconfirmed
GUEST, unregistred user!
因为我的程序是用DC画图的,是用GETDC()实现的,没有CANVAS。所以不知道如何使画上的图形擦除。DELPHI中把MODE设置为PMXOR的方法用API应该这么实现?
 
用SetROP2:

The SetROP2 function sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined.

int SetROP2(

HDC hdc, // handle of device context
int fnDrawMode // drawing mode
);


Parameters

hdc

Identifies the device context.

fnDrawMode

Specifies the new mix mode. This parameter can be any one of the following values:

Mix mode Description
R2_BLACK Pixel is always 0.
R2_COPYPEN Pixel is the pen color.
R2_MASKNOTPEN Pixel is a combination of the colors common to both the screen and the inverse of the pen.
R2_MASKPEN Pixel is a combination of the colors common to both the pen and the screen.
R2_MASKPENNOT Pixel is a combination of the colors common to both the pen and the inverse of the screen.
R2_MERGENOTPEN Pixel is a combination of the screen color and the inverse of the pen color.
R2_MERGEPEN Pixel is a combination of the pen color and the screen color.
R2_MERGEPENNOT Pixel is a combination of the pen color and the inverse of the screen color.
R2_NOP Pixel remains unchanged.
R2_NOT Pixel is the inverse of the screen color.
R2_NOTCOPYPEN Pixel is the inverse of the pen color.
R2_NOTMASKPEN Pixel is the inverse of the R2_MASKPEN color.
R2_NOTMERGEPEN Pixel is the inverse of the R2_MERGEPEN color.
R2_NOTXORPEN Pixel is the inverse of the R2_XORPEN color.
R2_WHITE Pixel is always 1.
R2_XORPEN Pixel is a combination of the colors in the pen and in the screen, but not in both.


Return Values

If the function succeeds, the return value specifies the previous mix mode.
If the function fails, the return value is zero.

Remarks

Mix modes define how GDI combines source and destination colors when drawing with the current pen. The mix modes are binary raster operation codes, representing all possible Boolean functions of two variables, using the binary operations AND, OR, and XOR (exclusive OR), and the unary operation NOT. The mix mode is for raster devices only; it is not available for vector devices.

See Also

GetROP2
 
var
canvas:tcanvas;
dc:hdc;
begin
canvas:=tcanvas.create;
canvas.handle:=dc;
....
end;
 
多人接受答案了。
 
后退
顶部