Большой Воронежский Форум
» Программирование>Работа с регионами в Delphi 7
EX_VIK 22:41 22.09.2008
Захотел в Делфи поприкалываться. Создать форму по рисунку. Загружаю в 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, то все равно рисует не полный рисунок! С чем это связанно? Как это можно исправить? [Ответ]
Gillbert 20:58 23.09.2008
После CombineRgn(...) память надо за собой чистить... Т.е. поставить

Сообщение от :
DeleteObject(hsWindowRegion);

Вообще коряво, ес чесно, написано И чем обычный Transparent у формы не нравится?... [Ответ]
Вверх