![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить форму? [D5, Win95/98]
DRUG © (2002-03-12 04:13:00)Недавно начал юзать Delphi.Помогите плиз.Как сделать форму не в
виде прямоугольника,а произвольную(не многоугольник),например как
у МП3плеера Sonique? Допустим используя картинку.
DRUG (2002-03-14 05:45:00) [1]Спасибо большое
TAN (2002-03-12 10:45:00) [2]Удалено модератором
Neolord (2002-03-12 04:58:00) [3]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; form1bmp: tbitmap;
implementation
{$R *.dfm}
function BitmapToRegion(Bitmap: TBitmap; TransColor: TColor): HRGN;
var
X, Y: Integer;
XStart: Integer;
begin
Result := 0;
with Bitmap do
for Y := 0 to Height - 1 do
begin
X := 0;
while X < Width do
begin
// Пропускаем прозрачные точки
while (X < Width) and (Canvas.Pixels[X, Y] = TransColor) do
Inc(X);
if X >= Width then
Break;
XStart := X;
// Пропускаем непрозрачные точки
while (X < Width) and (Canvas.Pixels[X, Y] <> TransColor) do
Inc(X);
// Создаём новый прямоугольный регион и добавляем его к
// региону всей картинки
if Result = 0 then
Result := CreateRectRgn(XStart, Y, X, Y + 1)
else
CombineRgn(Result, Result,
CreateRectRgn(XStart, Y, X, Y + 1), RGN_OR);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var Form1REGION:hrgn;
begin
form1.Color:=clred;
form1bmp:=tbitmap.Create;
form1bmp.loadfromfile("form1bmp.bmp");
form1REGION:=bitmaptoregion(form1bmp,clwhite);
SetWindowRgn(Form1.Handle,Form1REGION, True);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1BMP.free;
end;
end.