|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2007, 19:44 | #1 |
Пользователь
Регистрация: 08.09.2007
Сообщений: 15
|
не мерцающая графика
Здравствуйте!
Помогите, с таким вопросом, нужно рисовать графику. Но предыдущий опыт, показал, что если по нарисованному объекту провести другим окном, или убрать его за экран, то там всё стирается. Было это решено repaint`ом. Вопрос есть ли компонент на котором нарисовал, и ничего не перерисовываешь (чтобы не тратить ресурсы ЦП)? И еще, если есть такой, так чтобы он поддерживал модуль Graphics, включающий классы TCanvas, TPen, TBrush, TFont, TBitmap, TMetafile, TPicture и TIcon, который обеспечивает поддержку МНОГОПОТОЧНОСТИ. Последний раз редактировалось tebeen; 23.10.2007 в 00:38. |
22.10.2007, 20:09 | #2 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
Попробуй Image, насколько помню он обладает всеми перечисленными свойствами
|
22.10.2007, 21:25 | #3 | |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
|
23.10.2007, 00:35 | #4 |
Пользователь
Регистрация: 08.09.2007
Сообщений: 15
|
|
23.10.2007, 16:10 | #5 |
Пользователь
Регистрация: 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; |
23.10.2007, 16:17 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А на TImage помоему рисовать так просто нельзя. Бери TPaintBox вместо него.
I'm learning to live...
|
23.10.2007, 17:34 | #7 |
Пользователь
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Графика** | 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 |