Главная страница
    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.039 c
6-1105344825
ctranik
2005-01-10 11:13
2005.03.13
Вопрос по TIdHttp


6-1104640918
ArchValentin
2005-01-02 07:41
2005.03.13
Передача картинок по Socket у


3-1108201399
Dell3r
2005-02-12 12:43
2005.03.13
Медленная загрузка


9-1102253410
Bryke
2004-12-05 16:30
2005.03.13
Клик!


1-1109231329
SergeyKU
2005-02-24 10:48
2005.03.13
Запуск любых приложений из-под Делфи





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский