Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2008, 06:22   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Мерцание при перерисовки компонента

Доброго времени суток!
Господа, у меня проблема...
Вот фрагмент кода компонента...
Код:
procedure tAtom_test.mouseMove(Shift: TShiftState; X,
Y: Integer);
   begin
   inherited onMouseMove;
   x_pos := x; y_pos := y;
   invalidate;
end;

procedure tAtom_test.paint;
var
b: tBitmap;
begin
  inherited paint;
  b := tBitmap.Create;
  b.Width := width;
  b.Height := height;
  b.Canvas.pen.Color := clWhite;
  b.Canvas.brush.color := clBtnFace;
  b.Canvas.Rectangle(0, 0, width, height);
  b.Canvas.Pen.Color := clGray;
  b.Canvas.MoveTo(width-1, 0);
  b.Canvas.LineTo(width-1, height-1);
  b.Canvas.LineTo(0, height-1);

  b.Canvas.Pen.Color := clBlack;

  b.Canvas.MoveTo(x_pos, 1);
  b.Canvas.LineTo(x_pos, 6);

  b.Canvas.MoveTo(1, y_pos);
  b.Canvas.LineTo(6, y_pos);

  canvas.Draw(0, 0, b);
  b.Free;
end;
Думаю не надо объясьнять, что это... Короче, при вождении мышкой компонент слегка как-бы мирцает, как это исправить?
Altera вне форума Ответить с цитированием
Старый 25.03.2008, 08:26   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Скорее всего рисуется фон. Обработай это событие

Код:
procedure WMEraseBkGnd(var M: TWMEraseBkGnd); message WM_ERASEBKGND;

procedure  tAtom_test.WMEraseBkGnd(var M: TWMEraseBkGnd);
begin
   M.Result := -1;
end;
А inherited Paint точно нужен ?
alexBlack вне форума Ответить с цитированием
Старый 25.03.2008, 11:35   #3
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

В конструкторе компонента пропиши
DoubleBuffered := True;
Памяти будет жрать больше, но мерцания не будет.

А inherited Paint скорее всего не нужен.
Rik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мерцание на Канве SERG1980 Мультимедиа в Delphi 3 30.04.2008 08:14
мерцание shad0w Общие вопросы C/C++ 3 11.12.2007 12:31
При движении картинки происходит мерцание... Teen4jump Gamedev - cоздание игр: Unity, OpenGL, DirectX 14 11.07.2007 01:43
Мерцание объектов Chaos-Delta Мультимедиа в Delphi 4 02.07.2007 13:59