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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2007, 19:44   #1
tebeen
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 15
По умолчанию не мерцающая графика

Здравствуйте!

Помогите, с таким вопросом, нужно рисовать графику. Но предыдущий опыт, показал, что если по нарисованному объекту провести другим окном, или убрать его за экран, то там всё стирается. Было это решено repaint`ом.

Вопрос есть ли компонент на котором нарисовал, и ничего не перерисовываешь (чтобы не тратить ресурсы ЦП)?

И еще, если есть такой, так чтобы он поддерживал модуль Graphics, включающий классы TCanvas, TPen, TBrush, TFont, TBitmap, TMetafile, TPicture и TIcon, который обеспечивает поддержку МНОГОПОТОЧНОСТИ.

Последний раз редактировалось tebeen; 23.10.2007 в 00:38.
tebeen вне форума Ответить с цитированием
Старый 22.10.2007, 20:09   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Попробуй Image, насколько помню он обладает всеми перечисленными свойствами
_Dmitry вне форума Ответить с цитированием
Старый 22.10.2007, 21:25   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
(чтобы не тратить ресурсы ЦП)
а тот компонент будет каким нибудь волшебным способом перерисовываться, не тратя ресурсы?

TImage
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 23.10.2007, 00:35   #4
tebeen
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 15
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
а тот компонент будет каким нибудь волшебным способом перерисовываться, не тратя ресурсы?
Ну, например, метафайлы и bmp, нельзя сказать, что равны.

А за TImage, Спасибо.
tebeen вне форума Ответить с цитированием
Старый 23.10.2007, 16:10   #5
tebeen
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 15
По умолчанию

У-УУУУ!

В потоках, при рисовании, компонент жутко мерцает, но это ерунда, главное рисунок сохраняется. А вот ошибку выдаёт "System Error. Code: 6. Неверный дескриптор"


constructor TDrawThread.Create(AForm: TForm; AImage: TImage; AColor: TColor);
begin
FColor := AColor;
FForm := AForm;
FImage := AImage;
inherited Create(False);
end;

вызывается так:

TDrawThread.Create(Self, Image1, ColorDialog1.Color)

Image1 - это правильно?

procedure TDrawThread.Execute;
begin
with FImage.Canvas do
begin
Lock; // lock canvas
// only one thread at a time can execute the following code:
Pen.Color := FColor;
MoveTo(P1.X, P1.Y);
LineTo(P2.X, P2.Y);
// after the next line executes, another thread will be allowed
// to enter the above code block
Unlock; // unlock canvas
end;
end;
end;
tebeen вне форума Ответить с цитированием
Старый 23.10.2007, 16:17   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А на TImage помоему рисовать так просто нельзя. Бери TPaintBox вместо него.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2007, 17:34   #7
tebeen
Пользователь
 
Регистрация: 08.09.2007
Сообщений: 15
По умолчанию не мерцающая графика и потоки

Рисует, рисует. Только ошибка во время работы вылетает. После даже клавиатура отказала.

Теперь TPaintBox буду мучить..... Помучил...Затирается этот компонент..

Ошибка про дискриптор возникает, когда поток не останавливаешь, и пытаешься проект закрыть.

Но при рисовании на TImage сначало всё рисуется, а потом на какой-то тысячной линии (не важно, 10 или 500 тысячной линии, по-разному), изображение пропадает, совсем, как будто там ничего не было. Что это такое может быть.

Вот здесь http://www.kamelott.ru/virus/MTGraph.zip лежит пример от Стива и Ксавье. Здесь в потоках, рисуются линии на канву формы.

Попробовал так, сначала нарисовал 500000 линий в потоках на TImage,а потом сделал Image1.Visible:=True. Линии остались...? Похоже на ошибку при совместной работе потоков, и обновлением (repaint`ом) самого TImage.

Последний раз редактировалось tebeen; 24.10.2007 в 02:39.
tebeen вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика** Lenivec** Паскаль, Turbo Pascal, PascalABC.NET 2 28.04.2010 23:41
Графика V1rusPro Общие вопросы .NET 0 22.04.2008 08:25
Графика С++ kommunist Общие вопросы C/C++ 6 14.01.2008 15:21
Графика Dizman Помощь студентам 20 17.12.2007 17:03
Графика Aram Общие вопросы C/C++ 1 18.04.2007 18:56