Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А где у API Brush и Pen, Хелп 
:(
    Опции темы
DriveSoftware
Дата 14.1.2004, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



Где же они, как мне изменить цвет рисования например прямоугольника

Windows.Rectangle(GetDC(0), 0, 0, 100, 100);
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 14.1.2004, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Вот тебе пример(Canvas.handle поменяй на свой DC):

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 hPen, hBrush, oldPen, oldBrush : THandle;
 tb : LOGBRUSH;
begin
 try
   hPen := CreatePen(PS_SOLID, 3, clRed);
   oldPen := SelectObject(Canvas.Handle, hPen);
   tb.lbStyle := BS_HATCHED;
   tb.lbColor := clGreen;
   tb.lbHatch := HS_DIAGCROSS;
   hBrush := CreateBrushIndirect(tb);
   oldBrush := SelectObject(Canvas.Handle, hBrush);
   Ellipse(Canvas.Handle, 10, 10, 100, 100);
 finally
   SelectObject(Canvas.Handle, oldPen);
   SelectObject(Canvas.Handle, oldBrush);
   DeleteObject(hBrush);
   DeleteObject(hPen);
 end;
end;


Кончено я могу и ошибиться в чем нить, т.к. я на чистом АПИ не прогил.

Это сообщение отредактировал(а) <Spawn> - 14.1.2004, 21:34


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
DriveSoftware
Дата 14.1.2004, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



<Spawn> мне нада только на апи, а Canvas это уже Forms, у меня консоль smile.gif
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 14.1.2004, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Дак у тебя же есть GetDC(0), вот и используй его(если ты хотел рисовать на рабочем столе).


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
DriveSoftware
Дата 14.1.2004, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



написал вот так, и почему то цвет не изменился

Код


var
hPen, hBrush, oldPen, oldBrush : THandle;
tb : LOGBRUSH;
begin
try
  hPen := CreatePen(PS_SOLID, 3, clRed);
  oldPen := SelectObject(GetDC(0), hPen);
  tb.lbStyle := BS_HATCHED;
  tb.lbColor := clGreen;
  tb.lbHatch := HS_DIAGCROSS;
  hBrush := CreateBrushIndirect(tb);
  oldBrush := SelectObject(GetDC(0), hBrush);
  Ellipse(GetDC(0), 10, 10, 100, 100);
finally
  SelectObject(GetDC(0), oldPen);
  SelectObject(GetDC(0), oldBrush);
  DeleteObject(hBrush);
  DeleteObject(hPen);
end;


PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 14.1.2004, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Дак ты не правильно используешь GetDC. При каждом его вызове GetDC ты получаешь новое значение-манипулятор. Причем, при таком подходе, кроме того что у тебя ни чего не будет рисоваться еще и будет утечка ресурсов. Нужно так:

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 hPen, hBrush, oldPen, oldBrush : THandle;
 tb : LOGBRUSH;
 dc : HDC;
begin
 try
   dc := GetDC(0);
   hPen := CreatePen(PS_SOLID, 3, clRed);
   oldPen := SelectObject(dc, hPen);
   tb.lbStyle := BS_HATCHED;
   tb.lbColor := clGreen;
   tb.lbHatch := HS_DIAGCROSS;
   hBrush := CreateBrushIndirect(tb);
   oldBrush := SelectObject(dc, hBrush);
   Ellipse(dc, 10, 10, 100, 100);
 finally
   SelectObject(dc, oldPen);
   SelectObject(dc, oldBrush);
   DeleteObject(hBrush);
   DeleteObject(hPen);
   ReleaseDC(0, dc);
 end;
end;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.