gpt4 book ai didi

C++ CScrollView,如何滚动图像?

转载 作者:太空宇宙 更新时间:2023-11-04 13:10:58 25 4
gpt4 key购买 nike

我在CScrollView(继承自CView)中绘制图像。如果 View 窗体放大或缩小,则重新计算图像比例:

//*.h
CPictureHolder pic;

//*.cpp
void CMyAppView::OnPaint()
{
CPaintDC dc(this);
CBitmap bmp;
BITMAP b;
HBITMAP hbitmap;
CRect rect;
auto bmp_iter = theApp.FullBmpMap.find(m_iCurrentImage);

if (bmp_iter == theApp.FullBmpMap.end()) return;

hbitmap = bmp_iter->second;
bmp.Attach((*bmp_iter).second);
bmp.GetObject(sizeof(BITMAP), &b);

GetClientRect(&rect);
scaleRect = rect;
OriginalWidth = b.bmWidth;
OriginalHeight = b.bmHeight;
if (rect.Height() <= b.bmHeight)
scaleRect.right = rect.left + ((b.bmWidth*rect.Height()) / b.bmHeight);
else if (rect.Height() > b.bmHeight)
{
scaleRect.right = b.bmWidth;
scaleRect.bottom = b.bmHeight;
}
scaleRect.right = scaleRect.right + scale_koef_g;
scaleRect.bottom = scaleRect.bottom + scale_koef_v;

pic.CreateFromBitmap(hbitmap);
pic.Render(&dc, scaleRect, rect);

(*bmp_iter).second.Detach();
(*bmp_iter).second.Attach(bmp);
bmp.Detach();

int isclWidth = scaleRect.Width();
int isclHeight = scaleRect.Height();
int irHeight = rect.Height();
int irWidth = rect.Width();

if ((isclWidth> irWidth)||(isclHeight > irHeight))
{
SetScrollSizes(MM_TEXT, CSize(isclWidth, isclHeight));
}
}

通过 mouseweel 缩放选项:

BOOL CCardioAppView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
CPaintDC dc(this);
CRect rect, scaleRect;

GetClientRect(rect);
if (zDelta > 0)//up
scale_counter++;
else //down
scale_counter--;

if (scale_counter < 0) scale_counter = 0;

scale_koef_g = OriginalWidth*0.2*scale_counter;
scale_koef_v = OriginalHeight*0.2*scale_counter;

Invalidate(TRUE);

return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}

缩放和 scrools 正在工作,但是当我滚动时我得到了这个:

enter image description here

我需要在我的代码中添加什么?

最佳答案

尽量不要执行

CScrollView::OnMouseWheel(nFlags, zDelta, pt);

而是做

return FALSE;

关于C++ CScrollView,如何滚动图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39957200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com