Форма окна по BitmapDelphi , Графика и Игры , BitmapФорма окна по Bitmap
Оформил: DeeCo unit Unit1; interface uses Windows, Classes, SysUtils, Graphics, Forms; type TRGBArray = array[0..32767] of TRGBTriple; PRGBArray = ^TRGBArray; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FRegion: THandle; function CreateRegion(Bmp: TBitmap): THandle; end; var Form1: TForm1; implementation {$R *.dfm} function TForm1.CreateRegion(Bmp: TBitmap): THandle; var X, Y, StartX: Integer; Excl: THandle; Row: PRGBArray; TransparentColor: TRGBTriple; begin Bmp.PixelFormat := pf24Bit; Result := CreateRectRGN(0, 0, Bmp.Width, Bmp.Height); for Y := 0 to Bmp.Height - 1 do begin Row := Bmp.Scanline[Y]; StartX := -1; if Y = 0 then TransparentColor := Row[0]; for X := 0 to Bmp.Width - 1 do begin if (Row[X].rgbtRed = TransparentColor.rgbtRed) and (Row[X].rgbtGreen = TransparentColor.rgbtGreen) and (Row[X].rgbtBlue = TransparentColor.rgbtBlue) then begin if StartX = -1 then StartX := X; end else begin if StartX > -1 then begin Excl := CreateRectRGN(StartX, Y, X + 1, Y + 1); try CombineRGN(Result, Result, Excl, RGN_DIFF); StartX := -1; finally DeleteObject(Excl); end; end; end; end; if StartX > -1 then begin Excl := CreateRectRGN(StartX, Y, Bmp.Width, Y + 1); try CombineRGN(Result, Result, Excl, RGN_DIFF); finally DeleteObject(Excl); end; end; end; end; procedure TForm1.FormCreate(Sender: TObject); var Bmp: TBitmap; begin Bmp := TBitmap.Create; try Bmp.LoadFromFile('C:\YourBitmap.bmp'); FRegion := CreateRegion(Bmp); SetWindowRGN(Handle, FRegion, True); finally Bmp.Free; end; end; procedure TForm1.FormDestroy(Sender: TObject); begin DeleteObject(FRegion); end; end. Перевод контента на русский язык: Это код на Delphi, который создает форму с изображением bitmap и применяет регион к окну в соответствии с прозрачностью изображения. Рассмотрим подробно код:
Код также включает в себя обработку ошибок с использованием блоков Некоторые предложения по улучшению:
В целом, код хорошо структурирован и легко понятен. Однако он может потребовать некоторых улучшений в отношении производительности и надежности. В статье описывается способ создания прозрачной формы в Delphi, используя битовую картинку (Bitmap) для определения областей, которые должны быть прозрачными. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |