![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему "залипают" image.width и image.height при FormResize? [D6, Win2k]
Cosinus © (2005-03-01 14:19:00)Вот простая процедурка
procedure TFlashEdit.WMEXITSIZEMOVE(var Message: TMessage);
begin
PatBlt(Image.Canvas.Handle, 0, 0, image.Width, image.Height, WHITENESS);
end;
При первом ее вызове, все правильно отрабатывается и Image становится белым. Изменяя же дальше, белым почему то остается все тот же прямоугольник. ВсеAnchorsуImageстоят вtrue. РазмерыImageизменяются и функция вызывается - проверено. Никак не пойму.
Cosinus (2005-03-01 15:36:00) [1]
> MBo © (01.03.05 15:19) [4]
Хм.. Действительно. Спасибо.
Я решил проще сделать и вместоImage.canvas.draw(0,0,b);написалimage.Picture.Bitmap.Assign(b);
MBo (2005-03-01 15:19:00) [2]при изменении размеров Image изменяй и размеры Image.Picture.Bitmap
Cosinus (2005-03-01 15:06:00) [3]
> clickmaker © (01.03.05 15:01) [2]
Не, не то.PatBltя вызываю, только для примера, на самом деле там вызывается вот такая процедура...
procedure TFlashEdit.ShowBlock();
var
ColWidth,ColHeight:word;
ColWidthMax,ColHeightMax:word;
ColCount:byte;
ColCountMax,i:byte;
B:TBitMap;
Buffer:Pchar;
XCoor,YCoor:word;
p:PARGB;
Bt:byte;
begin
MS.Position:=0;
ColWidthMax:=64;
ColHeightMax:=Image.Height div 8;
ColCountMax:=Image.Width div ColWidthMax;
try
B:=TBitMap.Create;
with B do
begin
b.Monochrome:=true;
b.pixelformat:=pf24bit;
b.Width:=Image.ClientWidth;
b.Height:=Image.ClientHeight;
end;
PatBlt(Image.Canvas.Handle, 0, 0, image.ClientWidth, image.ClientHeight, WHITENESS);
GetMem(Buffer,$01);
For ColCount:=0 to ColCountMax-1 do
For ColHeight:=0 to ColHeightMax-1 do
for ColWidth:=1 to ColWidthMax do
begin
MS.ReadBuffer(buffer^,$01);
Bt:=ord(Buffer[0]);
for i:=1 to 8 do
begin
if odd(bt) then
begin
xCoor:=ColWidth+ColCount*ColWidthMax;
yCoor:= i+ColHeight*8;
p:=b.scanline[YCoor];
p[XCoor].r:=0;
p[XCoor].g:=0;
p[XCoor].b:=0
end;
Bt:=bt shr 1
end;
end;
FreeMem(Buffer);
Image.canvas.draw(0,0,b);
finally
b.Free;
end;
end;
clickmaker (2005-03-01 15:01:00) [4]Stretch = true
Cosinus (2005-03-01 14:44:00) [5]Если после изменения размеров, вызвать эту
PatBltпринудительно , например, нажатием на какую-нибудь клавишу, то тоже не отрабатывает.
Ткните носом, что же я ни так делаю.