Обучалки - Графика https://obychalki.ru/taxonomy/term/1/0 Вопросы по графике ru Как в Delphi использовать картинки формата JPEG? https://obychalki.ru/node/329 <p>Чтобы начать работать с картинками формата JPEG, необходимо в разделе <strong>USES</strong> подключить соответствующий модуль <strong>jpeg</strong></p> <p><div class="geshifilter"><pre class="delphi geshifilter-delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">uses</span> Windows<span style="color: #000066;">,</span> Messages<span style="color: #000066;">,</span> SysUtils<span style="color: #000066;">,</span> Variants<span style="color: #000066;">,</span> Classes<span style="color: #000066;">,</span> Graphics<span style="color: #000066;">,</span> Controls<span style="color: #000066;">,</span> Forms<span style="color: #000066;">,</span> Dialogs<span style="color: #000066;">,</span> ExtCtrls<span style="color: #000066;">,</span> StdCtrls<span style="color: #000066;">,</span> jpeg<span style="color: #000066;">;</span> &nbsp; <span style="color: #000066;">...</span> &nbsp; <span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Button1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">begin</span> Image1<span style="color: #000066;">.</span><span style="color: #006600;">Picture</span><span style="color: #000066;">.</span><span style="color: #006600;">LoadFromFile</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'c:/windows.jpg'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></p> https://obychalki.ru/node/329#comments Графика Mon, 08 Aug 2011 10:07:43 +0000 admin 329 at https://obychalki.ru Как добиться, чтобы изображение в PaintBox не пропадало, когда сворачиваем и разворачиваем окно? https://obychalki.ru/node/309 <p>Чтобы изображение в PaintBox не стиралось, нужно рисовать в процедуре, вызываемой на событие <strong>PaintBox.OnPaint</strong>. Когда картинка должна поменяться вызывать <strong>PaintBox.Invalidate()</strong></p> https://obychalki.ru/node/309#comments Графика Sat, 02 Jul 2011 10:07:29 +0000 admin 309 at https://obychalki.ru Как сделать снимок всего экрана? https://obychalki.ru/node/308 <p>Снимок экрана, в расположенный на форме Image, можно сделать следующей процедурой:<br /> <div class="geshifilter"><pre class="delphi geshifilter-delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Button1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">var</span> DeskTopDC<span style="color: #000066;">:</span> HDc<span style="color: #000066;">;</span> DeskTopCanvas<span style="color: #000066;">:</span> TCanvas<span style="color: #000066;">;</span> DeskTopRect<span style="color: #000066;">:</span> TRect<span style="color: #000066;">;</span> &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">begin</span> DeskTopDC <span style="color: #000066;">:</span><span style="color: #000066;">=</span> GetWindowDC<span style="color: #000066;">&#40;</span>GetDeskTopWindow<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> DeskTopCanvas <span style="color: #000066;">:</span><span style="color: #000066;">=</span> TCanvas<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">;</span> DeskTopCanvas<span style="color: #000066;">.</span><span style="color: #006600;">Handle</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> DeskTopDC<span style="color: #000066;">;</span> &nbsp; &nbsp; DeskTopRect <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000066;">Rect</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span>Screen<span style="color: #000066;">.</span><span style="color: #006600;">Width</span><span style="color: #000066;">,</span>Screen<span style="color: #000066;">.</span><span style="color: #006600;">Height</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> &nbsp; &nbsp; Image1<span style="color: #000066;">.</span><span style="color: #006600;">Canvas</span><span style="color: #000066;">.</span><span style="color: #006600;">CopyRect</span><span style="color: #000066;">&#40;</span>DeskTopRect<span style="color: #000066;">,</span>DeskTopCanvas<span style="color: #000066;">,</span>DeskTopRect<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> &nbsp; &nbsp; ReleaseDC<span style="color: #000066;">&#40;</span>GetDeskTopWindow<span style="color: #000066;">,</span>DeskTopDC<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> &nbsp; <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></p> https://obychalki.ru/node/308#comments Графика Sat, 18 Jun 2011 15:37:49 +0000 admin 308 at https://obychalki.ru Как узнать текущее разрешение экрана? https://obychalki.ru/node/306 <p>Использовать свойства<br /> <strong>Screen.Width, Screen.Height</strong></p> https://obychalki.ru/node/306#comments Графика Sat, 18 Jun 2011 15:17:18 +0000 admin 306 at https://obychalki.ru Как можно сделать форму прозрачной? https://obychalki.ru/node/302 <p>Для этого необходимо пеpеопpеделить обpаботчик события OnCreate: </p> <p><div class="geshifilter"><pre class="delphi geshifilter-delphi" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">FormCreate</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">begin</span> Brush<span style="color: #000066;">.</span><span style="color: #006600;">Style</span><span style="color: #000066;">:</span><span style="color: #000066;">=</span>bsClear<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></p> https://obychalki.ru/node/302#comments Графика Sat, 18 Jun 2011 15:10:11 +0000 admin 302 at https://obychalki.ru Можно ли получить растровое изображение формы с заголовком и рамкой? https://obychalki.ru/node/300 <p>Стандартные средства Delphi позволяют получать растровое изображение только внутренней части окна. Для получения изображения всего окна с заголовком и рамкой необходимо воспользоваться функциями API.</p> <p>Во-первых, получаем контекст всего окна функцией:</p> <p><span class="geshifilter"><code class="delphi geshifilter-delphi"><span style="color: #000000; font-weight: bold;">function</span> GetWindowDC<span style="color: #000066;">&#40;</span>Wnd<span style="color: #000066;">:</span> HWnd<span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> HDC<span style="color: #000066;">;</span></code></span></p> <p>Затем копируем растровое изображение окна в компонент TImage (для примера). И освобождаем полученный контекст окна: </p> <p><span class="geshifilter"><code class="delphi geshifilter-delphi"><span style="color: #000000; font-weight: bold;">function</span> ReleaseDC<span style="color: #000066;">&#40;</span>Wnd<span style="color: #000066;">:</span> HWnd<span style="color: #000066;">;</span> DC<span style="color: #000066;">:</span> HDC<span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span></code></span></p> <p>Пример:<br /> <div class="geshifilter"><pre class="delphi geshifilter-delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">Button1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">VAR</span> DC<span style="color: #000066;">:</span> hDC<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">begin</span> &nbsp; DC <span style="color: #000066;">:</span><span style="color: #000066;">=</span> GetWindowDC<span style="color: #000066;">&#40;</span>Handle<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> Image1<span style="color: #000066;">.</span><span style="color: #006600;">Picture</span><span style="color: #000066;">.</span><span style="color: #006600;">BitMap</span><span style="color: #000066;">.</span><span style="color: #006600;">Height</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> Height<span style="color: #000066;">;</span> Image1<span style="color: #000066;">.</span><span style="color: #006600;">Picture</span><span style="color: #000066;">.</span><span style="color: #006600;">BitMap</span><span style="color: #000066;">.</span><span style="color: #006600;">Width</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> Width<span style="color: #000066;">;</span> BitBlt<span style="color: #000066;">&#40;</span>Image1<span style="color: #000066;">.</span><span style="color: #006600;">Picture</span><span style="color: #000066;">.</span><span style="color: #006600;">BitMap</span><span style="color: #000066;">.</span><span style="color: #006600;">Canvas</span><span style="color: #000066;">.</span><span style="color: #006600;">Handle</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> Width<span style="color: #000066;">,</span> Height<span style="color: #000066;">,</span> DC<span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> SRCCOPY<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> ReleaseDC<span style="color: #000066;">&#40;</span>Handle<span style="color: #000066;">,</span> DC<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> &nbsp; <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></p> https://obychalki.ru/node/300#comments Графика Sat, 18 Jun 2011 15:03:13 +0000 admin 300 at https://obychalki.ru Как получить растровое изображение формы? https://obychalki.ru/node/295 <p>В компоненте TForm уже есть метод возвращающий растровое изображение формы, так что, для получения изображения достаточно вызвать его:</p> <p><span class="geshifilter"><code class="delphi geshifilter-delphi"><span style="color: #000000; font-weight: bold;">function</span> GetFormImage<span style="color: #000066;">:</span> TBitmap<span style="color: #000066;">;</span></code></span></p> <p> Пример: </p> <p><div class="geshifilter"><pre class="delphi geshifilter-delphi" style="font-family:monospace;"> Image1<span style="color: #000066;">.</span><span style="color: #006600;">Picture</span><span style="color: #000066;">.</span><span style="color: #006600;">BitMap</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> GetFormImage<span style="color: #000066;">;</span></pre></div></p> https://obychalki.ru/node/295#comments Графика Sat, 18 Jun 2011 12:28:59 +0000 admin 295 at https://obychalki.ru Можно ли из Delphi рисовать в любой части экрана или в чужом окне? https://obychalki.ru/node/287 <p>Для этого надо воспользоваться функциями API. Получить контекст чужого окна, либо всего экрана:</p> <p><span class="geshifilter"><code class="delphi geshifilter-delphi"><span style="color: #000000; font-weight: bold;">function</span> GetDC<span style="color: #000066;">&#40;</span>Wnd<span style="color: #000066;">:</span> HWnd<span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> HDC<span style="color: #000066;">;</span> </code></span></p> <p>где Wnd - указатель на нужное окно, или 0 для получения контекста всего экрана.</p> <p>И далее, пользуясь функциями API, нарисовать все что надо.</p> <p>Пример: </p> <p><div class="geshifilter"><pre class="delphi geshifilter-delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">PROCEDURE</span> DrawOnScreen<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">VAR</span> ScreenDC<span style="color: #000066;">:</span> hDC<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">BEGIN</span> &nbsp; ScreenDC <span style="color: #000066;">:</span><span style="color: #000066;">=</span> GetDC<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">{получить контекст экрана}</span> Ellipse<span style="color: #000066;">&#40;</span>ScreenDC<span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">200</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">200</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">{нарисовать}</span> ReleaseDC<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span>ScreenDC<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span> <span style="color: #808080; font-style: italic;">{освободить контекст}</span> &nbsp; <span style="color: #000000; font-weight: bold;">END</span><span style="color: #000066;">;</span></pre></div></p> https://obychalki.ru/node/287#comments Графика Sat, 18 Jun 2011 11:58:15 +0000 admin 287 at https://obychalki.ru Как отобразить растровое изображение, чтобы определенный его цвет был "прозрачным"? https://obychalki.ru/node/285 <p>Эффект "прозрачного" фона достигается методом BrushCopy объекта Canvas:</p> <p>Пример:</p> <p>В качестве фонового, для изображения, цвета выбирается цвет его левой нижней точки (именно эта точка является "фоновой" при рисовании глифов для кнопок в Delphi).</p> <p><div class="geshifilter"><pre class="delphi geshifilter-delphi" style="font-family:monospace;">BrushCopy<span style="color: #000066;">&#40;</span> Bounds<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">10</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">10</span><span style="color: #000066;">,</span> Bitmap<span style="color: #000066;">.</span><span style="color: #006600;">Width</span><span style="color: #000066;">,</span> Bitmap<span style="color: #000066;">.</span><span style="color: #006600;">Height</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span> Bitmap<span style="color: #000066;">,</span> Bounds<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> Bitmap<span style="color: #000066;">.</span><span style="color: #006600;">Width</span><span style="color: #000066;">,</span> Bitmap<span style="color: #000066;">.</span><span style="color: #006600;">Height</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span> Bitmap<span style="color: #000066;">.</span><span style="color: #006600;">Canvas</span><span style="color: #000066;">.</span><span style="color: #006600;">Pixels</span><span style="color: #000066;">&#91;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> Bitmap<span style="color: #000066;">.</span><span style="color: #006600;">Height</span> <span style="color: #000066;">-</span> <span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span></pre></div></p> https://obychalki.ru/node/285#comments Графика Sat, 18 Jun 2011 11:51:53 +0000 admin 285 at https://obychalki.ru