| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Вывод графики на экран.Вывод графики на экран. Расскажем про основы вывода графических изображений с помощью KOL. А основы (в моем понимании) - это обычный вывод растровой картинки :) C помощью КOL вы сможете выводить на экран только bmp. Для того чтобы выводить jpg и gif вы должны подключить JpegObj и KolGif. Благодаря этим дополнительным библиотекам ваша программа конечно станет большего размера, но зато сможет показывать картинки этих двух форматов. Для того чтобы работать с изображениями вы должны создать объекты типа
pBitmap, pGif , pJpeg. Для каждого формата изображения свой тип объекта. Ниже привожу конструкторы этих объектов.
После создания объекта вы можете загрузить изображения. Все эти объекты поддерживают загрузку из файла и из потока (через свойства LoadFromFile и LoadFromStream). PBitmap может кроме этого загружать изображения из ресурсов. Теперь про то, где будет отображаться рисунок. Фактически можно рисовать почти на любом компоненте, но все таки предпочтительней Paintbox. Поэтому далее говоря про PaintBox, я буду подразумевать и другие поверхности. PaintBox имеет следующей конструктор:
Создав PaintBox, вам надо указать процедуру обрабатывающую событие OnPaint.
Draw - обычная прорисовка с сохранением размера рисунка. При рисование через Draw или DrawTransparent размер PaintBox должен быть равен размеру рисунка. Если этого не произойдет (например PaintBox больше) то часть PaintBox которая "выпирает" не будет прорисовывается и будет прозрачной. А "дырка" в окне программы - это как то не эстетично :) Хватит философствовать, пора и показать пример. В нем мы будем использовать ScrollBox для более удобного просмотра выходящих за пределы окна больших картинок.
program Primer_4;
uses
windows,
messages,
kol,
JpegObj,
KOLGIF;
{$R *.RES}
var
Form,
pTop,
PB,
buOpen,
SBox:pControl;
ext:string;
bmp: pBitmap;
Gif: pGif;
Jpg: pJpeg;
dlgOpen:pOpenSaveDialog;
///////////////////////////////////////////////////////////
procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if AnsiCompareText(ext,'.bmp')=0 then
Bmp.Draw(PB.Canvas.Handle,0,0);
if AnsiCompareText(ext,'.gif')=0 then
Gif.Draw(PB.Canvas.Handle,0,0);
if AnsiCompareText(ext,'.jpg')=0 then
jpg.Draw(PB.Canvas.Handle,0,0);
end;
///////////////////////////////////////////////////////////
Procedure OpenPic ( Dummy : Pointer; Sender : PControl );
begin
if dlgOpen = nil then
dlgOpen := NewOpenSaveDialog('Открыть рисунок','',[]);
if PB = nil then
begin
PB := NewPaintBox(SBox);
PB.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
end;
dlgOpen.Filter:='Рисунки (bmp,gif,jpg)|*.bmp;*.gif;*.jpg';
if dlgOpen.Execute then
begin
ext := ExtractFileExt(dlgOpen.Filename);
if AnsiCompareText(ext,'.bmp')=0 then
begin
if BMP = nil then
Bmp := NewBitmap( 0, 0 );
Bmp.LoadFromFile(dlgOpen.Filename);
PB.Width := Bmp.Width ;
PB.Height:= Bmp.Height;
end;
if AnsiCompareText(ext,'.gif')=0 then
begin
if Gif = nil then
Gif := NewGif;
Gif.LoadFromFile(dlgOpen.Filename);
PB.Width := Gif.Width ;
PB.Height:= Gif.Height;
end;
if AnsiCompareText(ext,'.jpg')=0 then
begin
if jpg = nil then
jpg := NewJpeg;
jpg.LoadFromFile(dlgOpen.Filename);
PB.Width := jpg.Width ;
PB.Height:= jpg.Height;
end;
Form.StatusText[0]:=PChar(ExtractFileName(dlgOpen.Filename));
end;
end;
//////////////////////////////////////////////////////////
begin
Applet := NewApplet('Пример # 4 (Работа с графикой)');
Form := NewForm(Applet,'Пример # 4').SetSize(640,450);
Form.CenterOnParent; // размещаем наше окно посередине экрана
Form.Font.FontName := 'MS Sans Serif';
Form.Font.FontHeight := 9;
// -------- рисуем интерфейс -----------------------------
pTop := NewPanel(Form,esRaised). SetAlign(caTop);
pTop.Height := 35;
buOpen := NewButton(pTop,'Открыть').SetAlign(caLeft);
buOpen.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );
SBox := NewScrollBoxEx(Form,esLowered).SetAlign(caClient);
// -------------------------------------------------------
run(Applet);
end.
Исходный текст : 2,48 Кб ; размер программы: 102Кб(без сжатия и замены
System) Источник: http://bonanzas.rinet.ru , http://kol.mastak.ru Рубрика: Kol и MCK
Инструменты Internet Explorer 8 Beta 2 для разработчиков.
Подробнее... |
Рубрика: Вебмастеру
| Добавлено: 05.09.2008
Google Developer Day 2008 в Москве.
Дата проведения: 28 октября 2008 г.; Место проведения: Амбер Плаза, Москва, Россия. Конференция для веб-разработчиков и разработчиков мобильных приложений в Москве. Узнайте, как наилучшим образом использовать инструменты разработки и API от Google, чтобы создавать социальные, мобильные и картографические приложения, как использовать AJAX/JavaScript инструменты и библиотеки от Google и многое другое из первых уст.
Подробнее... |
Рубрика: Мероприятия
| Добавлено: 05.09.2008
ТОП 10 самых раздражающих факторов для программиста.
Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…
Подробнее... |
Рубрика: Разное
| Добавлено: 03.09.2008
Остальные статьи:
Windows Server 7, 8 и 9
jQuery для JavaScript-программистов
Инновационный веб-броузер Google Chrome стартует уже сегодня
Windows 7: подход к производительности системы
Trac + Subversion @ Ubuntu: Revisited
[g]Vim в режиме Python: Рекомпиляция в Windows
Java + JSON. Пути к дружбе
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|