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

Вниз

Мигает 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
14-13410
Vasily_
2003-05-18 17:52
2003.06.05
Как установить программно отображение рисунков в TWebBrowser


1-13129
Doc
2003-05-26 00:13
2003.06.05
Как получить на выходе вместо запятой, точку?


14-13374
rosl
2003-05-21 01:23
2003.06.05
Количество строк на странице


14-13439
e}{e
2003-05-20 01:13
2003.06.05
Задача на классы 2


14-13392
Till
2003-05-16 07:39
2003.06.05
Oracle Data Access Components Net 4.05.1.8 for Delphi 6





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