закрасить сектор (pie)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
evgm00
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 12.02.2007 (Пн) 20:53

закрасить сектор (pie)

Сообщение evgm00 » 12.02.2007 (Пн) 21:05

привет всем
нужно нарисовать круговой сектор и закрасить его
делаю так:
Public Sub DrawPie(ByVal X1 As Single, ByVal Y1 As Single, ByVal X2 As Single, ByVal Y2 As Single, ByVal X3 As Single, ByVal Y3 As Single, ByVal X4 As Single, ByVal Y4 As Single, ByRef oPic As Object, ByVal lColor As OLE_COLOR)

Dim PointArray(3) As POINTAPI
Dim hBrush As Long

PointArray(0).x = X1
и тд
PointArray(3).y = Y4

hBrush = CreateSolidBrush(lColor)
Call SelectObject(oPic.hdc, hBrush)

'oPic - это pictureBox

Call Pie(oPic.hdc, PointArray(0).x, PointArray(0).y, PointArray(1).x, PointArray(1).y, PointArray(2).x, PointArray(2).y, PointArray(3).x, PointArray(3).y)

Call DeleteObject(hBrush)

End Sub

сектор рисуется но не закрашивается. Где я что не так делаю???
заранее спасибо.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 12.02.2007 (Пн) 23:36

Вместо кисти CreatePen(PS_SOLID, размер, цвет)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: закрасить сектор (pie)

Сообщение tyomitch » 13.02.2007 (Вт) 3:17

evgm00 писал(а):сектор рисуется но не закрашивается. Где я что не так делаю???
заранее спасибо.

Например, удаляешь выбранную кисть?
Проще не маяться с CreateSolidBrush, а установить нужные FillColor и FillStyle.

BV писал(а):Вместо кисти CreatePen(PS_SOLID, размер, цвет)

Ерунда: The pie is outlined by using the current pen and filled by using the current brush.
Изображение

evgm00
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 12.02.2007 (Пн) 20:53

Сообщение evgm00 » 13.02.2007 (Вт) 8:20

oPic.DrawWidth = 1
oPic.ForeColor = vbBlack
oPic.FillColor = vbBlack
oPic.DrawStyle = vbSolid

Call Pie(oPic.hdc, x1, y1, x2, y2, x3, y3, x4, y4)

рисует но черным не закрашивает!!!
...
hBrush = CreateSolidBrush(lColor)
Call SelectObject(oPic.hdc, hBrush)

hPen = CreatePen(0, 1, lColor)
Call SelectObject(oPic.hdc, hPen)

Call Pie(oPic.hdc, x1, y1, x2, y2, x3, y3, x4, y4)

Call DeleteObject(hBrush)
Call DeleteObject(hPen)
...
рисует но черным не закрашивает тоже!!!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.02.2007 (Вт) 9:56

tyomitch писал(а):Проще не маяться с CreateSolidBrush, а установить нужные FillColor и FillStyle.

evgm00 писал(а):oPic.DrawWidth = 1
oPic.ForeColor = vbBlack
oPic.FillColor = vbBlack
oPic.DrawStyle = vbSolid

Call Pie(oPic.hdc, x1, y1, x2, y2, x3, y3, x4, y4)

рисует но черным не закрашивает!!!

Найди одно отличие?
Изображение

evgm00
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 12.02.2007 (Пн) 20:53

Сообщение evgm00 » 13.02.2007 (Вт) 11:55

блин... ёмоё!!!
вот глючу то я

ForeColor >> FillStyle

спасибо большое


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 83

    TopList