用什么作漂亮的不规则窗体?

ansi 2002-11-13 08:32:37
如何作出漂亮的不规则窗体?
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ansi 2002-11-16
  • 打赏
  • 举报
回复
你的网站好像是设计方面的,和Delphi不沾边呢
caicaitian 2002-11-16
  • 打赏
  • 举报
回复
你可以在硬件专区提问我或我找人给你回答
caicaitian 2002-11-15
  • 打赏
  • 举报
回复
我的QQ是84583116
欢迎你来我门网站
www.5thpower.net
caicaitian 2002-11-14
  • 打赏
  • 举报
回复
你看看看的冻吗?
caicaitian 2002-11-14
  • 打赏
  • 举报
回复
unit UnitPicWindow;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons;

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
function CreateRegion(wMask: TBitmap; wColor: TColor;
hControl: THandle): HRGN;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function Tform1.CreateRegion(wMask:TBitmap;wColor:TColor;hControl:THandle): HRGN;
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 TForm1.FormCreate(Sender: TObject);
var
w1:TBitmap;
w2:TColor;
rgn: HRGN;
begin
w1:=TBitmap.Create;
w1.Assign(image1.Picture.Bitmap);
w2:=w1.Canvas.Pixels[0,0];
rgn := CreateRegion(w1,w2,Handle);
if rgn<>0 then
begin
SetWindowRgn(Handle, rgn, true);
end;
w1.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close();
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
end;

end.
ansi 2002-11-14
  • 打赏
  • 举报
回复
不过我照着作了,没有出现漂亮的窗口,我的mail:ansi88@163.net
ansi 2002-11-14
  • 打赏
  • 举报
回复
我刚接触delphi,慢慢的看看吧,很谢谢热心的你,我把分数提高吧
gangaozh 2002-11-13
  • 打赏
  • 举报
回复
能给我发一份吗?
谢谢您了!
gangaozh@sina.com
caicaitian 2002-11-13
  • 打赏
  • 举报
回复
那个把你要做的窗体做成图片
不要的部分做成白色的
让计算机去扫描图片 把白色的部分做透明处理 图片做为窗口处理
怕你不明白
我给你一段原代码你把你的油箱给我

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧