Главная страница
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.027 c
4-1106136295
ShiZ
2005-01-19 15:04
2005.03.13
Отлавливание сигналов с клавиатуры.


1-1109744968
WishMaster
2005-03-02 09:29
2005.03.13
маааленькая программулина


1-1109239970
Начинающий2
2005-02-24 13:12
2005.03.13
Access violation at addres.


14-1108983701
ST
2005-02-21 14:01
2005.03.13
Русификация программы


1-1109177226
Aleksandr
2005-02-23 19:47
2005.03.13
Как прочитать первую и вторую строку текстового файла(*txt)?