![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с регионом [D6, D7, Win95/98, WinXP]
Kolan © (2004-09-27 21:23:00)Здравствуйте,
Нашел пример с регионом. Делаю свой регион квадрат на белом фоне. Но при запуске форма окна соответствует квадрату а сам квадрат почемуто сдвинут вниз и вправо.
Kolan (2004-09-28 00:14:00) [1]Сам шучу сам смеюсь сам себе опладирую BorderStyle=bsNone
Kolan (2004-09-27 22:28:00) [2]Вот исходник не молчите:
function BitmapToRegion(Bitmap: TBitmap; TransColor: TColor): HRGN;
var X, Y,k: Integer;
XStart: Integer;
begin
Result := 0;
Bitmap.width;
Bitmap.height;
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 RGN : HRGN;
begin
// ñîçäàåì ðåãèîí äëÿ êàðòèíêè
RGN:= BitmapToRegion(Image1.Picture.Bitmap, clWhite);
// óñòàíàâëèâàåì íîâûé ðåãèîí äëÿ êàðòèíêè
SetWindowRgn(Form1.Handle, RGN, True); // âòîðîé ïàðàìåòð âñåãäà ðàâåí True
end;