我是菜鸟,怎样创建一个三角形的窗口或者是任意形状的窗口?
解决方案 »
- 获取结构指针中的值 问题
- 请问win7下如何调用摄像头拍照?网上的代码在win7上都不能用
- 关于Image1动态调用*.jpg文件?
- 调用Windows中的Cards.dll的函数cdtdraw画出来的扑克牌如何擦除掉啊?
- 软件开发时关于数据库建库问题??
- 更改.exe程序中的汉字
- 窗体应用:无法改变应用程序图标,Project Options->Application->Locd Icon...变灰了
- 关于控制动态产生Checkbox,并进行动态控问题
- delphi 如何向其他网站发送数据
- 一个关于sizeof的超级奇怪的问题。。。
- 如何改变滚动条的颜色与样式。up有分(分不过再给)
- delphi的exe文件能反编译吗?
var
dc, dc_c: HDC;
rgn: HRGN;
x, y: integer;
coord: TPoint;
line: boolean;
color: TColor;
begin
dc := GetWindowDC(hControl);
dc_c := CreateCompatibleDC(dc);
SelectObject(dc_c, wMask.Handle);
BeginPath(dc);
for x := 0 to wMask.Width - 1 do
begin
line := false;
for y := 0 to wMask.Height - 1 do
begin
color := GetPixel(dc_c, x, y);
if not (color = wColor) then
begin
if not line then
begin
line := true;
coord.x := x;
coord.y := y;
end;
end;
if (color = wColor) or (y = wMask.Height - 1) then
begin
if line then
begin
line := false;
MoveToEx(dc, coord.x, coord.y, nil);
LineTo(dc, coord.x, y);
LineTo(dc, coord.x + 1, y);
LineTo(dc, coord.x + 1, coord.y);
CloseFigure(dc);
end;
end;
end;
end;
EndPath(dc);
rgn := PathToRegion(dc);
ReleaseDC(hControl, dc);
Result := rgn;
end;下面是调用方法procedure TFrmMain.LoadSkin;
var
w2:TColor;
rgn: HRGN;
begin
PlayerSKIN:='skin1.bmp';
TimeTop:=35;
TimeLeft:=16; Image1.Picture.LoadFromFile(PlayerSKIN);
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile(PlayerSKIN);
MouseDownFlag := false;
w2 := Bitmap.Canvas.Pixels[0, 0];
rgn := CreateRegion(Bitmap, w2, Handle);
if rgn <> 0 then
begin
SetWindowRgn(Handle, rgn, true);
end;end;