![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как перерисовать только Image [D7, WinXP]
avprohorov © (2007-02-06 07:02:00)Я пишу програмку нестандартной формы ( не прямоугольная)
на ней 12 регионов неправильной формы, они типа за кнопки.
сверху на регион кладу Image - иконку.
При отработки OnMouseMove через функцию ptinregion
перекрашиваю регионы в другие цвета при попадании в него мыши, а Image при этом становится невидимым. при попытке перерисовать Image.repaint перерисовывается вся форма, что не очень хорошо (мигает) при каждом движении мыши.
Как выйти из ситуации, чтоб и Image остался видимым и вся форма не перерисовывалась.
avprohorov (2007-02-08 06:21:00) [1]попробовал tbitmap в принципе просто. (созрел)
@!!ex (2007-02-07 13:43:00) [2]"Не созрел, зря старались..." (C)комунизденно
Авось сам дозреешь, или порграммирование бросишь.
avprohorov (2007-02-07 13:41:00) [3]вчера пробовал Tbitbtn, у него, как в прочем у TButton refresh не вызывает рефреш всей формы.
типа тож через invalidateRect делается и параметром координаты button-а?не хочется с битмапом заморачиватся
попробую всетаки Timage и перерисовку области InvalidateRect
@!!ex (2007-02-07 12:40:00) [4]Только для ээфективности Один битмап на всю форму и поэтому картинки из ImageList'a нужно класть в соответствующие координаты БитМапа, все это должно порисходить здесь:
> //Draw
> //Здесь на битмапе рисуешь все что душе угодно.
> //Draw
Кстати, перерисовку окна нужно вызывать так:
InvalidateRect(Handle, nil, false);
@!!ex (2007-02-07 12:38:00) [5]ImageList.Draw
avprohorov (2007-02-07 10:18:00) [6]@!!ex
Я не вижу как в bitmap положить картинку, которая в Timagelist лежит.
@!!ex (2007-02-06 13:41:00) [7]Все просто.
var
Back:TBitMap;
FormCreate;
Back:=TBitMap.Create; //сОздаем экземпляр
Back.Width:=Width;
Back.Height:=Height;
FormPaint:
//Draw
//Здесь на битмапе рисуешь все что душе угодно.
//Draw
BitBlt(Canvas.Handle,0,0,Width,Height,Back.Canvas.Handle,0,0,SRCCOPY);//Выводим изображение на форму
avprohorov (2007-02-06 11:56:00) [8]tbitmap вечером попробую хотя я вчера попытался в хелпе про него почитать, сложно все там как то
@!!ex (2007-02-06 10:16:00) [9]Использовать InvalidateRect, не импользовать TImage, использовать TBitMap, BitBlt. Решаться все проблемы.