Shahzad Naseer Ответов: 1

C++ cbitmap круглые углы


У меня есть растровое изображение m_bitmap. Как я делаю его закругленным углом, чтобы я поместил эту кнопку на кнопку OnEraseBackground или OnPaint, чтобы иметь округлый вид. Пожалуйста, Любая Помощь. Мой код ниже делает кнопку круглой, но когда я наведу курсор мыши на кнопку, она обратится к форме прямоугольника.

Что я уже пробовал:

CDC dc2;
			dc2.CreateCompatibleDC(pDC);
			CBitmap *oldbmap = dc2.SelectObject(&m_bitmap);

			/*We copy the bitmap into the DC*/
			pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &dc2, 0, 0, SRCCOPY);
			dc2.SelectObject(oldbmap);


			CRgn rgn;
			rgn.CreateRoundRectRgn(0, 0, rect.Width(), rect.Height(), m_ptRound.x, m_ptRound.y);
			SetWindowRgn(static_cast<HRGN>(rgn.GetSafeHandle()), 1);
			rgn.Detach();

11917640 Member

Вызова SetWindowRgn прежде чем передача битового блока.

Shahzad Naseer

Спасибо....

Rick York

Я считаю, что 11917640-это правильно.

Кроме того, на этом сайте есть несколько статей, в которых реализованы кнопки с закругленными углами. Возможно, вы захотите взглянуть на некоторые из них.

Shahzad Naseer

Это правда. Спасибо

1 Ответов

Рейтинг:
2

KarstenK

Прочитать статью Руководство по регионам WIN32 для базового понимания. Хорошая статья об использовании-это CContourBitmap - Создатель Региона который описывает хороший пример использования регионов для растровых изображений.

Совет: создайте закругленное растровое изображение один раз и сохраните его для последующего использования