Здравствуйте. Есть файлы формата png, которые выгружаются в окно на определённые координаты. Также есть линии.
Вопрос: Как сделать обработчик событий, чтобы при клике на определённую картинку-руку линии меняли цвет на нужный.
View моего проекта.
void CRPSView::OnDraw(CDC* pDC)
{
CRPSDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
/*CBrush br;
CBrush* br_st;*/
CPen pen;
CPen* pen_st;
/*CFont font;
CFont* font_st;*/
CRect rect;
this->GetClientRect(&rect);
CImage C;
CDC mem;
CBitmap bm;
BITMAP bb;
mem.CreateCompatibleDC(pDC);
if (draw == 1)
{
C.Load(L"1.png");
bm.Attach(C);
mem.SelectObject(&bm);
bm.GetBitmap(&bb);
int q, e;
q = (rect.Width() - bb.bmWidth) / 4;//спок
e = (rect.Height() - bb.bmHeight)/2;
pDC->BitBlt(q, e, bb.bmWidth, bb.bmHeight, &mem, 0, 0, SRCCOPY);
C.Load(L"2.png");
bm.Attach(C);
mem.SelectObject(&bm);
bm.GetBitmap(&bb);
int x, y;
x = (rect.Width() - bb.bmWidth) / 2;//камень
y = (rect.Height() - bb.bmHeight) * 0;
pDC->BitBlt(x, y, bb.bmWidth, bb.bmHeight, &mem, 0, 0, SRCCOPY);
C.Load(L"3.png");
bm.Attach(C);
mem.SelectObject(&bm);
bm.GetBitmap(&bb);
int w, r;
w = (rect.Width() - bb.bmWidth) / 2.5;//ящерица
r = (rect.Height() - bb.bmHeight);
pDC->BitBlt(w, r, bb.bmWidth, bb.bmHeight, &mem, 0, 0, SRCCOPY);
C.Load(L"4.png");
bm.Attach(C);
mem.SelectObject(&bm);
bm.GetBitmap(&bb);
int t, u;
t = (rect.Width() - bb.bmWidth)/1.3;//ножницы
u = (rect.Height() - bb.bmHeight)/2;
pDC->BitBlt(t, u, bb.bmWidth, bb.bmHeight, &mem, 0, 0, SRCCOPY);
C.Load(L"5.png");
bm.Attach(C);
mem.SelectObject(&bm);
bm.GetBitmap(&bb);
int o, p;
o = (rect.Width() - bb.bmWidth) / 1.6;//бумага
p = (rect.Height() - bb.bmHeight);
pDC->BitBlt(o, p, bb.bmWidth, bb.bmHeight, &mem, 0, 0, SRCCOPY);
pen.CreatePen(PS_SOLID, 7, RGB(0, 0, 255));
pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 2.2, rect.bottom / 4);
pDC->LineTo(rect.right / 3.1, rect.bottom / 2.6);
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 7, RGB(0, 0, 255));
pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 3.1, rect.bottom / 1.34);
pDC->LineTo(rect.right / 1.4, rect.bottom / 1.34);
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 7, RGB(0, 0, 255));
pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 1.4, rect.bottom / 1.34);
pDC->LineTo(rect.right / 2, rect.bottom / 12);
pen.DeleteObject();
/*pen.CreatePen(PS_SOLID, 7, RGB(117, 187, 253));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 2.6, rect.Height() / 10);
pDC->LineTo(rect.right / 1.4, rect.bottom / 2.1);
pen.DeleteObject();*/
/*pen.CreatePen(PS_SOLID, 7, RGB(117, 187, 253));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 1.4, rect.bottom / 2.1);
pDC->LineTo(rect.right / 2.6, rect.bottom / 1.1);
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 7, RGB(117, 187, 253));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 2.6, rect.bottom / 1.1);
pDC->LineTo(rect.right / 2.6, rect.Height() / 10);
pen.DeleteObject();*/
/*pen.CreatePen(PS_SOLID, 7, RGB(216, 133, 25));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 1.6, rect.Height() / 10);
pDC->LineTo(rect.right / 3.4, rect.bottom / 2.1);
pen.DeleteObject();*/
/*pen.CreatePen(PS_SOLID, 7, RGB(216, 133, 25));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 3.4, rect.bottom / 2.1);
pDC->LineTo(rect.right / 1.6, rect.bottom / 1.1);
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 7, RGB(216, 133, 25));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 1.6, rect.bottom / 1.1);
pDC->LineTo(rect.right / 1.6, rect.Height() / 10);
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 7, RGB(0, 100, 0));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 3.2, rect.Height() / 4);
pDC->LineTo(rect.right / 1.4, rect.Height() / 4);
pen.DeleteObject();*/
pen.CreatePen(PS_SOLID, 7, RGB(0, 100, 0));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 1.4, rect.Height() / 4);
pDC->LineTo(rect.right / 2, rect.bottom / 1.09);
pen.DeleteObject();
pen.CreatePen(PS_SOLID, 7, RGB(0, 100, 0));
pen_st = pDC->SelectObject(&pen);
pDC->MoveTo(rect.right / 2, rect.bottom / 1.09);
pDC->LineTo(rect.right / 3.2, rect.Height() / 4);
pen.DeleteObject();
}
// TODO: добавьте здесь код отрисовки для собственных данных
}
...
void CRPSView::OnRps()
{
draw = 1;
Invalidate();
// TODO: добавьте свой код обработчика команд
}