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

Вниз

TImage   Найти похожие ветки 

 
deivan   (2003-09-21 22:23) [0]

Моя программа рисует гистограммы на кoмпоненте TImage. И вот вдруг пошли жалобы, что в некоторых случаях графика на оном компоненте не отрисовывается. Я писал на Делфи5, стандартный компонент ТИмаж. Есть ли у компонента глюк? У меня на машине дома и на работе все в порядке, но у людей иногда нет результата...


 
Спрашивающий_   (2003-09-22 01:35) [1]

Как не перерисовывется, уточни. У Image есть некоторые нюансы при выводе графики, например если увеличивать размеры формы на которых он стоит alClient то полностью графика на нем не отрисуется, выход при создании формы задать максимальные размеры Image. Но лучше для вывода графики использовать например
TCustomPanel(мерцание меньше).


 
deivan   (2003-09-23 08:36) [2]

я еще не уточнил у пользователей, но видимо есть у ТИмаж какой-то действительно тонкий ньюанс. А чем можно заменить этот компонент?


 
pasha_golub   (2003-09-23 10:43) [3]

Для вывода графики используется TPaintBox из стандартного набора, и не будет тебе геморроя с Имаджом


 
VAleksey   (2003-09-23 11:31) [4]

Зато запаришся с мерцанием на TPaintBox.
Я предлагаю тебе рисовать на TBitMap, а потом делать Image1.Picture.Assign(bmp).


 
pasha_golub   (2003-09-23 12:11) [5]

2VAleksey
Он же гистрограммы рисует, а не мультфильм показывает :-)


 
VAleksey   (2003-09-23 12:15) [6]


> pasha_golub © (23.09.03 12:11)

Не, ну я предупредил :-).


 
deivan   (2003-09-24 09:16) [7]


> pasha_golub © (23.09.03 10:43) [3]
> Для вывода графики используется TPaintBox из стандартного
> набора, и не будет тебе геморроя с Имаджом

Я им пользовался, раньше, но он не перерисовывается автоматом при накрытии моей формы другой формой.. поэтому склонился к ТИмаж.
Пока пытаюсь составить статистику -- на каких конфигурациях вылетает Тимаж.


 
ЮЮ   (2003-09-24 09:24) [8]

>Я им пользовался, раньше, но он не перерисовывается автоматом при накрытии моей формы другой формой

Как раз таки он это и делает, только код рисования должен вызываться в обработчике OnPaint, а не где-то сбоку, т.е. в отличие от BitMap-а, в котором "рисуешь" один раз, а затем сколько хочешь раз показываешь, в PainBoxe надо постоянно перерисовывать когда это требует система и при сложном построении - это не выход


 
ЮЮ   (2003-09-24 09:31) [9]

>А чем можно заменить этот компонент?

TImage32 из Graphics32. TImage32.Bitmap имеет методы рисования, подобные методам TCanvas: (Line, FillRect и т.п.), имеет в 1000 раз более быстрый доступ к Pixel, и т.д. и т.п.


 
deivan   (2003-09-26 23:39) [10]


> Как раз таки он это и делает, только код рисования должен
> вызываться в обработчике OnPaint, а не где-то сбоку, т.е.
> в отличие от BitMap-а, в котором "рисуешь" один раз, а затем
> сколько хочешь раз показываешь, в PainBoxe надо постоянно
> перерисовывать когда это

У меня гистограмма рисуется на основе данных из дбф-файла, если в ОнПаинт поставить перерисовку -- будет загруз винта..


 
Viktor Kushnir   (2003-09-27 08:58) [11]

Рисуй в памяти на TMetafile, сохраняй её и прорисовывай по небходимости в onPaint. Metafile памяти так не жрет.


 
y-soft   (2003-09-27 09:14) [12]

Добавлю свою лепту - используте DirectX с объектом отсечения, тогда уж точно всегда и все отрисуется :)


 
ZEE   (2003-09-27 10:34) [13]

>deivan (21.09.03 22:23)
>Моя программа рисует гистограммы
а не лучше ли TChart + TSeries ?


 
deivan   (2003-09-28 14:13) [14]


> Как раз таки он это и делает, только код рисования должен
> вызываться в обработчике OnPaint, а не где-то сбоку, т.е.
> в отличие от BitMap-а, в котором "рисуешь" один раз, а затем
> сколько хочешь раз показываешь,

У меня не одна гистограмма, а несколько, каждая отрисовывается по своему пункту меню.
Как я в ОнПаинте отслежу, что именно надо отрисовать? Гемморойно получится. А БитМап автоматом перерисовывается по сле накрытия формы с ним другой формой?


 
Viktor Kushnir   (2003-09-28 15:04) [15]

Автоматом перересовывается только TImage, так как это компанент визуальный. TBitmap - компанент не визуальный. Когда ты ресуешь на нем - изображение получается в памяти. А вот вывести это изображение ты можешь уже куда угодно. Хоть на TImage, хоть на Принтер. Метод Draw. Рисование через такой буфер ускоряет ручную прорисовку.


 
Анонимщик   (2003-10-02 11:24) [16]

Вместо ненужной статистики нужно искать ошибку. Все, что здесь предлагалось - глупости.
Скажи мне,
1. У тебя однопоточное приложение?
2. Если да, то приведи код отрисовки, лучше упрощенный.


 
deivan   (2003-10-07 21:05) [17]


> Вместо ненужной статистики нужно искать ошибку. Все, что
> здесь предлагалось - глупости.
> Скажи мне,
> 1. У тебя однопоточное приложение?
> 2. Если да, то приведи код отрисовки, лучше упрощенный.


Где-то так:

procedure TForm1.DrawBoard;
var
aver,i,j: Integer;
begin
Image1.Canvas.Brush.Color:=clGray;
Image1.Canvas.FillRect(ClientRect);
for i:=1 to 45 do
if Odd(i) then
Image1.Canvas.TextOut((i-1)*14,270,IntToStr(i))
else
Image1.Canvas.TextOut((i-1)*14,285,IntToStr(i));
Image1.Canvas.Font.Color:=clWhite;
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.MoveTo(0,255); Image1.Canvas.LineTo(630,255);
Image1.Canvas.TextOut(635,252,"1");
Image1.Canvas.MoveTo(0,215); Image1.Canvas.LineTo(630,215);
Image1.Canvas.TextOut(635,212,"5");
end;



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

Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
3-65341
Элина
2003-09-29 13:37
2003.10.20
Вопрос по базе Paradox (ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)


14-65591
Думкин
2003-10-02 06:33
2003.10.20
С днем рождения! 1 октября.


7-65651
Mr. Smit
2003-08-04 00:51
2003.10.20
Как сохранить ClipBoard в файл ?


1-65461
Oleg__
2003-10-09 09:55
2003.10.20
Странная ошибка


14-65613
Igor_thief
2003-09-30 22:05
2003.10.20
DelphiWorld





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