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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pie в GDI+, Как нарисовть Pie средствами GDI+ 
V
    Опции темы
Gwire
Дата 26.7.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

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



Делаю что-то типа кругового многосекторного прогресс-бара (внутри часный, снаружи общий прогресс)
Все рисую на канвасе используя GDI+. 
Все кроме отрисовки сектора. Использую стандартный Canvas.Pie. Выглядит не очень.

Вопрос:
Как нарисовать сектор в GDI+ ?

PM MAIL   Вверх
Gwire
Дата 26.7.2011, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

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




Нашел такое "полурешение"
Код

procedure TForm1.FormPaint(Sender: TObject);
var G, P, W: Pointer;
begin
    GdipCreateFromHDC ( Canvas.Handle, G );
    GdipCreatePen1    ( aclRed, 1, UnitWorld, P );
    GdipCreatePath    ( FillModeAlternate, W );
    
    GdipAddPathPie( W, 0, 0, 200, 200, 0, 120 );
    GdipDrawPath( G, P, W );  // надо GdipFillPath

    GdipDeletePath    ( W );
    GdipDeletePen     ( P );
    GdipDeleteGraphics( G );
end;

"полурешение" потому что GdipFillPath по какойто причине не рисует.

Буду искать... Если знаете причину пишите.

PM MAIL   Вверх
Gwire
Дата 26.7.2011, 18:49 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

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



Нашел решение.
Нужно вместо КАРАНДАША ( GdipCreatePen1 ) создавать Шетку ( GdipCreateSolidFill )
Код

    GdipCreateFromHDC   ( Canvas.Handle, G );
    GdipCreateSolidFill ( aclRed, B);
    GdipCreatePath      ( FillModeWinding, W );

    GdipSetSmoothingMode ( G, SmoothingModeAntiAlias );
    GdipAddPathPie       ( W, 0, 0, 200, 200, 0, 120 );
    GdipFillPath         ( G, B, W );

    GdipDeletePath    ( W );
    GdipDeleteBrush   ( B);
    GdipDeleteGraphics( G );



Это сообщение отредактировал(а) Gwire - 26.7.2011, 18:51
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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