取得图片的透明区域
498)this.style.width=498;\">
(*//
标题:取得图片的透明区域
说明:适用于制作复杂的不规则窗体
设计:Zswang
支持:wjhu111@
日期:
//*) (*//============================================================================
设计思路:~~
就是对画布一行一行的扫描~~
对于不是透明色相连的像素都看成一条条的线段~~
───────── ─ ─── ─────
─────── ──── ───────
─── ─── ── ───────
── ─────────
用这些线段组合成不规则的区域~~
线段就是找到开始位置和结束位置就行了~~
组合区域是最花时间的地方~~
减少组合区域的频率就可以提高运行的速度~~
用线段组合就比用点组合少多了~~
============================================================================//*)
function GraphicToRGN(mGraphic: TGraphic; mTransPoint: TPoint): HRGN;
var
I, J: Integer;
vStart: Integer;
vHandle: HRGN;
vTransColor: TColor;
begin
Result := 0;
if not Assigned(mGraphic) then Exit;
Result := CreateRectRgn(0, 0, 0, 0);
with eate do try
Width := dth;
Height := ight;
aw(0, 0, mGraphic);
vTransColor := xels[mTransPoint.X, mTransPoint.Y];
for I := 0 to Height - 1 do begin
vStart := 0;
for J := 0 to Width do begin
if (xels[J, I] vTransColor) and (J Width) then
学校 if vStart 0 then
vStart := J
else
else if vStart = 0 then begin
vHandle := CreateRectRgn(vStart, I, J, I + 1);
try
CombineRgn(Result, Result, vHandle, RGN_OR);
finally
DeleteObject(vHandle);
end;
vStart := -1;
end;
end;
end;
finally
Free;
end;
end; { GraphicToRGN }
//Example
procedure tton1Click(Sender: TObject);
var
vRGN: HRGN;
begin
BorderStyle := bsNone;
ft := 0;
p := 0;
vRGN := GraphicToRGN(aphic, Point(0, 0));
try
SetWindowRgn(Handle, vRGN, True);
finally
DeleteObject(vRGN);
end;
end;
查看本文来源
百色治疗白癜风医院哪家好石家庄治疗白癜风医院哪好
哪种避孕措施女性常用
- 上一页:取得下一个证书的个步骤的
- 下一页:取得磁盘序列号卷标和文件系统类型物业
-
戚薇只身着李承铉的上衣就拍照,当镜头向下扫去:李承铉太有福了
说到戚薇和李承铉这一对影星CP,相信许多恰巧对他们都不好奇了,可以碰到...
2024-12-10
-
郑秀文劳动节晒健身照,从某处细节看出她与许志安的情意稳定
自从的港媒曝白光薛凯琪在游览车之中与年前钟嘉欣黄心颖激吻,薛凯琪开会...
2024-10-12
-
率先8个风华音乐大师工作室落户宁波大学
十一号8个风华古典作曲者游戏公司落户嘉兴大学 近日,嘉兴“古典音乐之城...
2024-03-02
-
马斯克拜师了张小龙吗?
踌躇满志入股Twitter的雷诺,突然要向张小龙“取经”了。 5同年16日,雷诺参...
2024-02-22
-
漂亮小姐姐,暗红色露肩包臀裙穿搭,凸显苗条身材
衣服连动带着一种优雅与浪漫爱情,走在街头就有优如白蛇一般的最美,靓女...
2024-02-14
-
放弃民办三本选择公办专科后,才说出的4件事,后悔没有早知道
很多同学和幼儿都将改变命运的希望寄托在高考上,希望能考上一个好的所学...
2024-02-05