nim_duilib/examples/multi_browser/dragdrop/bitmap_control.cpp

32 lines
784 B
C++
Raw Normal View History

2019-04-19 17:19:57 +08:00
#include "bitmap_control.h"
using namespace ui;
BitmapControl::BitmapControl()
{
bitmap_ = NULL;
}
void BitmapControl::Paint(ui::IRenderContext* pRender, const ui::UiRect& rcPaint)
{
if (!::IntersectRect(&m_rcPaint, &rcPaint, &m_rcItem)) return;
__super::Paint(pRender, rcPaint);
if (NULL == bitmap_)
return;
HDC hCloneDC = ::CreateCompatibleDC(pRender->GetDC());
HBITMAP hOldBitmap = (HBITMAP) ::SelectObject(hCloneDC, bitmap_);
pRender->AlphaBlend(m_rcItem.left, m_rcItem.top, m_rcItem.right - m_rcItem.left, m_rcItem.bottom - m_rcItem.top, hCloneDC,
0, 0, m_rcItem.right - m_rcItem.left, m_rcItem.bottom - m_rcItem.top);
::SelectObject(hCloneDC, hOldBitmap);
::DeleteDC(hCloneDC);
}
void BitmapControl::SetBitmapImage(HBITMAP bitmap)
{
bitmap_ = bitmap;
}