Старый 22.09.2008, 22:41   #1   
Форумец
 
Аватар для EX_VIK
 
Сообщений: 116
Регистрация: 23.10.2007

EX_VIK вне форума Не в сети
Работа с регионами в Delphi 7

Захотел в Делфи поприкалываться. Создать форму по рисунку. Загружаю в Image1 рисунок (черно-белый). И ставлю у обработчика кнопки вот такой код:
procedure TForm1.Button1Click(Sender: TObject);
var
x, y, hsWindowRegion, hsWindowRegion2: integer;
begin
hsWindowRegion2:=CreateRectRgn(0,0,0,0);
for x := 1 to Image1.Picture.Height do
for y := 1 to Image1.Picture.Width do
if Image1.Canvas.Pixels[y,x] = clBlack then
begin
hsWindowRegion:=CreateRectRgn(y, x, y+1, x+1);
CombineRgn(hsWindowRegion2, hsWindowRegion2, hsWindowRegion, RGN_OR);
end; //if
SetWindowRgn(Handle, hsWindowRegion2, true);
end;

Реально, не могу сообразить, почему не получается? Форма изменяет свой размер, но не совсем так! Например у меня рисунок 140*170 . О регионы нифига так не рисуют. Они где-то рисуют 140*130. Если даже x и y задать напрямую 1..170, то все равно рисует не полный рисунок! С чем это связанно? Как это можно исправить?
  Ответить с цитированием
Старый 23.09.2008, 20:58   #2   
Aegis
 
Аватар для Gillbert
 
Сообщений: 86
Регистрация: 12.09.2007

Gillbert вне форума Не в сети
После CombineRgn(...) память надо за собой чистить... Т.е. поставить
Цитата:
DeleteObject(hsWindowRegion);
Вообще коряво, ес чесно, написано И чем обычный Transparent у формы не нравится?...
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind