
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.164.139] |
![]() |
|
Сообщ.
#1
,
|
|
|
Так мы рисуем круг текущей кистью и текущим карандашом.
![]() ![]() CClientDC dc(this); dc.Ellipse(0, 0, 20, 20); А, как нарисовать только контур кружочка, без заливки не используя Polygon, LineTo? |
![]() |
Сообщ.
#2
,
|
|
CDC::Arc ?
для Ellipse можно попробовать установить нулевую кисть, которую можно получить через GetStockObject(NULL_BRUSH) вроде |
Сообщ.
#3
,
|
|
|
Пишет error C2039: GetStockObject: не является членом "CDC"
|
![]() |
Сообщ.
#4
,
|
|
![]() ![]() CBrush br; br.CreateSysColorBrush(NULL_BRUSH); и так далее dc.SelectObject.... |
Сообщ.
#5
,
|
|
|
Я рисую так
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 ); |
Сообщ.
#6
,
|
|
|
Спасибо за рекомендации, но:
Используя NULL_BRUSH эллипс получается закрашен черным цветом ![]() ![]() 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: ![]() ![]() dc.Arc(10,10,200,200, 10,10, 10, 10); Но, эллипс без заливки как-то должен рисоваться функцией Ellipse. Может еще нужны какие-то установки, что бы кисть была прозрачной? |
![]() |
Сообщ.
#7
,
|
|
Цитата Заяц @ Используя NULL_BRUSH эллипс получается закрашен черным цветом ![]() ![]() 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 @ ![]() ![]() CBrush br; br.CreateSysColorBrush(NULL_BRUSH);// <---- это не CreateSolidBrush !!!! и так далее dc.SelectObject.... |
Сообщ.
#8
,
|
|
|
![]() ![]() 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(); Так, тоже не работает ![]() |
Сообщ.
#9
,
|
|
|
CreateBrushIndirect c параметром lbStyle = BS_HOLLOW = BS_NULL
|
![]() |
Сообщ.
#10
,
|
|
либо
![]() ![]() CBrush brush; brush.Attach(GetStockObject(NULL_BRUSH) ); во, заглянул в справку ![]() ![]() CBrush brush; brush.CreateStockObject(NULL_BRUSH); |
Сообщ.
#11
,
|
|
|
Спасибо, заработало
![]() ![]() 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(); и так тоже работает ![]() ![]() 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(); Спасибо всем. |
Сообщ.
#12
,
|
|
|
Примечание: при lbStyle=BS_HOLLOW остальные мемберы LOGBRUSH можно не устанавливать, т.к. они все равно игнорируются
|