Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.05;
Скачать: CL | DM;

Вниз

Мигает bitmap!!! Что делать?   Найти похожие ветки 

 
super_alex ©   (2003-05-26 13:09) [0]

В цикле рисую на TImage
Делаю через Canvas.Pixel[x,y]:=clRed;
Далее при отрисовке каждой точки делаю TImage.Update;
Но картинка вся мигает!!!
Что делать с этим? Кто подскажет?


 
Skier ©   (2003-05-26 13:12) [1]

>super_alex © (26.05.03 13:09)

> Делаю через Canvas.Pixel[x,y]:=clRed;

Это вообче очень медленный подход - рисуй в память, а потом
отображай...


 
super_alex ©   (2003-05-26 13:16) [2]

Вообщето мне надо в реальном времени рисовать...
А как это в память рисовать? Не подскажешь? Кинь кодик, плиз...

P.S.
Я программер не очень сильный, только начинающий...


 
Skier ©   (2003-05-26 13:20) [3]

>super_alex © (26.05.03 13:16)

> Вообщето мне надо в реальном времени рисовать...

А зачем при отрисовке каждой точки Update делаешь ?


 
Skier ©   (2003-05-26 13:22) [4]

>super_alex © (26.05.03 13:16)
И лучше TPaintBox использовать...


 
super_alex ©   (2003-05-26 13:24) [5]

Если более точно, то рисуется прямоугольник. Рисуется он линиями - слева направо, снизу вверх (попиксельно). Вот после каждой линии делаю Update. А иначе получается что всё отобразиться только после того как получиьтся весь прямоугольник.

P.S.
Весь гемор потому что цвет каждой точки вычисляется отдельно...


 
super_alex ©   (2003-05-26 13:32) [6]

А чем TPaintBox лучше TImage?


 
AlexSV ©   (2003-05-26 13:36) [7]

Замени TImage.Update на Application.ProcessMessages


 
super_alex ©   (2003-05-26 13:45) [8]

Всё-равно мигает...


 
Skier ©   (2003-05-26 13:46) [9]

>super_alex

> . А иначе получается что всё отобразиться только после того
> как получиьтся весь прямоугольник.

Что-то ты не так делаешь...
MoveTo используешь ?


 
super_alex ©   (2003-05-26 13:50) [10]

Нет...?
Я же рисую точками, причём тут MoveTo?


 
AlexSV ©   (2003-05-26 13:50) [11]

Приведи код процедуры


 
Skier ©   (2003-05-26 13:51) [12]

Код


 
super_alex ©   (2003-05-26 14:02) [13]

TransformF - тот самый TImage!!!

for i:=0 to Ширина прямоугольника do
begin
for k:=0 to Высота прямоугольника do
begin
<..//Определение цвета точки - transform.f[k]..>
TransformF.Canvas.Pixels[i,TransformF.Height-k]:=RGB(transform.f[k]);
end;
end;
TransformF.Update;



 
super_alex ©   (2003-05-26 14:03) [14]

Ошибся!!
Update - внутри первого цикла!!!


 
Intell ©   (2003-05-26 14:06) [15]

Form1.DoubleBuffered:=True;


 
super_alex ©   (2003-05-26 14:08) [16]

Form1.DoubleBuffered:=True;
Это где добавлять?

Если при Create формы, то пробовал - не помогает!!!


 
Kaban ©   (2003-05-26 14:25) [17]

и будет мигать

предлагаю вариант:
создаешь bitmap
рисуешь только на нем
создаешь таймер с маленьким интервалом, допустим 30
в таймере bitmap отрисовываешь на image



 
super_alex ©   (2003-05-26 14:27) [18]

А можешь встроить своё предложение в мой код, которой выше?


 
AlexSV ©   (2003-05-26 14:42) [19]

Предлагаю начать с этого кода:
for i:=0 to Ширина прямоугольника do
begin
for k:=0 to Высота прямоугольника do
begin
TransformF.Canvas.Pixels[i, TransformF.Height-k] := RGB(0, i, k);
end;
Application.ProcessMessages;
end;

Если моргание исчезнет, то поэтапно добавлять нужные фрагменты кода.


 
VMcL ©   (2003-05-26 14:50) [20]

>super_alex © (26.05.03 13:09)

Используй DirectDraw®


 
super_alex ©   (2003-05-26 14:56) [21]

Application.ProcessMessages; - НЕ ПОМОГАЕТ!!!


 
AlexSV ©   (2003-05-26 15:06) [22]

Проверил приведенный код. Работает на ура (с Update в том числе).
Может у тебя еще что-то, но по приведенному фрагменту это не видно.


 
super_alex ©   (2003-05-26 15:09) [23]

В смысле не мигает что ли?
Я пробовал - то что мигает в D6, не мигает в D3!


 
Intell ©   (2003-05-26 17:36) [24]

Кстати, если Image лежит на TPanel, то нужно написать код так:

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.panel1.DoubleBuffered:=True;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.06.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
3-13095
Caesar
2003-05-19 10:43
2003.06.05
Несоответствие типов данных


3-12996
YuraKiller
2003-05-13 02:12
2003.06.05
Как убить внешний ключ?


1-13305
Seldon
2003-05-24 22:36
2003.06.05
Unicode -> String


3-13014
lightix
2003-05-15 16:35
2003.06.05
программно выставить значение DBLookupComboBox...


1-13233
zeppelin
2003-05-27 13:18
2003.06.05
TreeView