Форум: "Потрепаться";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизСоздание окна Найти похожие ветки
← →
BZsder (2005-01-26 21:12) [0]Уважаемые мастера можно ли создать окно "произвольной" формы. В данном случае такого типа: http://chatland.chatzme.com/img/forma.gif
И как это сделать?
← →
Юрий Зотов © (2005-01-26 21:15) [1]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=903
← →
Григорьев Антон © (2005-01-26 22:45) [2]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=83
← →
Kolan © (2005-01-26 23:44) [3]Да.
Для этого надо создать регион.
1. Кидаешь на форму Image.
Далее Пишеш вот такую функцию.function TForm1.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;
2. А зстем в FormCreate
procedure TForm1.FormCreate(Sender: TObject);
Var RGN : HRGN;
begin
// Создаем регион для картинки
RGN:= BitmapToRegion(Image1.Picture.Bitmap, clWhite);
// Уст новый регион
SetWindowRgn(Form1.Handle, RGN, True);
end;
Не забуть поставить св-во BorderStyle в bsNone.
Теперь чтобы форму "Таскать"
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If ssLeft In Shift Then
Begin
ReleaseCapture;
SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
End;
end;
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c