Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Почему "залипают" image.width и image.height при FormResize?   Найти похожие ветки 

 
Cosinus ©   (2005-03-01 14:19) [0]

Вот простая процедурка
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 14:44) [1]

Если после изменения размеров, вызвать эту PatBlt принудительно , например, нажатием на какую-нибудь клавишу, то тоже не отрабатывает.
Ткните носом, что же я ни так делаю.


 
clickmaker ©   (2005-03-01 15:01) [2]

Stretch = true


 
Cosinus ©   (2005-03-01 15:06) [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;


 
MBo ©   (2005-03-01 15:19) [4]

при изменении размеров Image изменяй и размеры Image.Picture.Bitmap


 
Cosinus ©   (2005-03-01 15:36) [5]


> MBo ©   (01.03.05 15:19) [4]
Хм.. Действительно. Спасибо.
Я решил проще сделать и вместо Image.canvas.draw(0,0,b);
написал image.Picture.Bitmap.Assign(b);



Страницы: 1 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
1-1109442903
Checist [root]
2005-02-26 21:35
2005.03.13
TControl


3-1108099425
Карелин Артем
2005-02-11 08:23
2005.03.13
Как удалить все индексы в базе Firebird?


6-1104859757
Lucifer
2005-01-04 20:29
2005.03.13
Создание LAN Chat a


1-1109325023
vigo
2005-02-25 12:50
2005.03.13
TClientDataSet


1-1109325312
denis24
2005-02-25 12:55
2005.03.13
Неявное обращение к Stringlist