Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Почему "залипают" 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.04 c
9-1103540530
webpauk
2004-12-20 14:02
2005.03.13
DirectDraw


14-1109078258
Aleksandr
2005-02-22 16:17
2005.03.13
Тонер (порошок для заправки принтеров и ксероксов)


8-1101410514
bulanov
2004-11-25 22:21
2005.03.13
jpg в DelphiX


3-1108397709
MakedoneZ
2005-02-14 19:15
2005.03.13
Table и его Fields


14-1108984691
kaZaNoVa
2005-02-21 14:18
2005.03.13
Дайджесты форумов, и html-формат





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский