На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Нарисовать Ellipse без заливки
    Так мы рисуем круг текущей кистью и текущим карандашом.

    ExpandedWrap disabled
      CClientDC dc(this);
      dc.Ellipse(0, 0, 20, 20);


    А, как нарисовать только контур кружочка, без заливки не используя Polygon, LineTo?
      CDC::Arc ?

      для Ellipse можно попробовать установить нулевую кисть, которую можно получить через GetStockObject(NULL_BRUSH) вроде
        Пишет error C2039: GetStockObject: не является членом "CDC"
          ExpandedWrap disabled
            CBrush br;
            br.CreateSysColorBrush(NULL_BRUSH);

          и так далее
          dc.SelectObject....
            Я рисую так
            http://www.firststeps.ru/mfc/steps/help/r.php?743
            BOOL Arc( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );
            Сообщение отредактировано: _Oleg_ -
              Спасибо за рекомендации, но:

              Используя NULL_BRUSH эллипс получается закрашен черным цветом

              ExpandedWrap disabled
                void CEllipsBrushDlg::OnPaint()
                {
                    CPaintDC dc(this);
                    CBrush brush;
                 
                    brush.CreateSolidBrush(NULL_BRUSH);
                    dc.SelectObject(brush);
                    dc.Ellipse(10, 10, 200, 200);
                    
                    brush.DeleteObject();
                 
                    CDialog::OnPaint();
                }


              Конечно, как вариант получилось через arc:
              ExpandedWrap disabled
                    dc.Arc(10,10,200,200, 10,10, 10, 10);


              Но, эллипс без заливки как-то должен рисоваться функцией Ellipse.
              Может еще нужны какие-то установки, что бы кисть была прозрачной?
                Цитата Заяц @
                Используя NULL_BRUSH эллипс получается закрашен черным цветом

                ExpandedWrap disabled
                  void CEllipsBrushDlg::OnPaint()
                  {
                      CPaintDC dc(this);
                      CBrush brush;
                   
                      brush.CreateSolidBrush(NULL_BRUSH);
                      dc.SelectObject(brush);
                      dc.Ellipse(10, 10, 200, 200);
                      
                      brush.DeleteObject();
                   
                      CDialog::OnPaint();
                  }


                а я писал так
                Цитата ElcnU @
                ExpandedWrap disabled
                  CBrush br;
                  br.CreateSysColorBrush(NULL_BRUSH);// <---- это не CreateSolidBrush !!!!



                и так далее
                dc.SelectObject....
                  ExpandedWrap disabled
                        CBrush brush;
                     
                        brush.CreateSysColorBrush(NULL_BRUSH);
                        dc.SelectObject(brush);
                        dc.Arc(0,0,150,150, 0,0, 10, 10);
                        dc.Ellipse(10, 10, 200, 200);
                        brush.DeleteObject();


                  Так, тоже не работает :huh:
                    CreateBrushIndirect c параметром lbStyle = BS_HOLLOW = BS_NULL
                    Сообщение отредактировано: leo -
                      либо
                      ExpandedWrap disabled
                        CBrush brush;
                        brush.Attach(GetStockObject(NULL_BRUSH) );



                      во, заглянул в справку
                      ExpandedWrap disabled
                        CBrush brush;
                        brush.CreateStockObject(NULL_BRUSH);
                        Спасибо, заработало

                        ExpandedWrap disabled
                              CPaintDC dc(this);
                              CBrush brush;
                           
                              brush.Attach(GetStockObject(NULL_BRUSH));
                           
                              dc.SelectObject(brush);
                              dc.Arc(0,0,150,150, 0,0, 10, 10);
                              dc.Ellipse(10, 10, 200, 200);
                              brush.DeleteObject();


                        и так тоже работает

                        ExpandedWrap disabled
                              CPaintDC dc(this);
                              LOGBRUSH logBrush;
                              logBrush.lbStyle = BS_HOLLOW ;
                              logBrush.lbColor = RGB(0, 192, 192);
                              logBrush.lbHatch = HS_CROSS;
                              
                              CBrush brush;
                              brush.CreateBrushIndirect(&logBrush);
                           
                              dc.SelectObject(&brush);
                              
                              dc.Arc(0,0,150,150, 0,0, 10, 10);
                              dc.Ellipse(10, 10, 200, 200);
                              brush.DeleteObject();


                        Спасибо всем.
                          Примечание: при lbStyle=BS_HOLLOW остальные мемберы LOGBRUSH можно не устанавливать, т.к. они все равно игнорируются
                          Сообщение отредактировано: leo -
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0362 ]   [ 16 queries used ]   [ Generated: 2.05.24, 03:53 GMT ]