Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с выводом графика


-matrix- ©   (2006-01-10 15:23:00) 

Хотелось бы узнать у Мастеров, каким образом можно осуществить следующую ситуацию: мне требуется в правом нижнем углу экрана рисовать 3х мерную диаграмму (график), но не сплошную, а с "просветами" на остальные окна. Мне хотелось бы сделать это наилучшим способом с точки зрения быстродействия, тк она будет обновляться каждые 1-2 с. Пока программа работает следующим образом: в памяти рисуется bitmap со всеми координатними плоскостями и графиком, затем он (по идее) должен рисоваться поверх все окон. Но, во-первых, я не нашел инфы по выводу Tbitmap'а  на экран, а во-вторых, я не определился с задним фоном графика: сделать его прозрачным или скринить то место на экране и уже сверху него рисовать данный график?
Заранее спасибо


Deka   (2006-01-12 12:17:00) [1]

В дополнение к [2] могу сказать, что просто график без фона может смотреться довольно плохо если будет отрисовываться на чем-нибудь пестром (бывают же пестрые обои?). Поэтому IMHO лучший способ - это сделать полупрозрачную форму
(прозрачность может регулировать юзер), а на ней уже отрисовывать график.


Хинт   (2006-01-11 20:23:00) [2]

Я думаю лучше рисовать не на экране (BitBlt), а просто создать форму с AlphaBlend'ом, кинуть на неё TImage и отображать уже в Image.Picture.Bitmap (правда подойдет только для XP).

Если всё же хочешь рисовать - то вот пример:
var
DC:HDC;
Bmp:TBitmap;
begin
...
DC:=GetDC(0);
BitBlt(dc,pt.X,pt.Y,HintBMP.Width,HintBMP.Height,HintBMP.Canvas.Handle,0,0,SRCCOPY);
ReleaseDC(0, DC);
end;


-matrix-   (2006-01-11 20:16:00) [3]

Хм, переформулируем запрос в вопросы:
 1. Наиболее быстрый способ работы с графикой - рисование на canvas'е bitmap'а, находящегося в памяти, и затем его вывода?
  2.Как мне нарисовать конкретный bitmap поверх всех окон?
 3. Если картинка имеет "просветы", те скозь нее видны другие окна, то как лучше это реализовать: сначала скриним данный участок экрана, потом сверху него рисуем все что надо и помещаем итоговый рисунок поверх окон, или просто использовать transparent в этом bitmap'е?

ps Не мне Вам указывать, но (вдруг ускользнуло от админов?) у Вас не работает ссылка на другие сайты, не скачивается дайджест, да и поиск глючит...


Наверх

Титульная страница Поиск, карта сайта Написать письмо