问题描述
- VC,很急、很急,求救!!
-
VC++ 6.0 中怎么使在View类视图上给绘制的网格线、图形、坐标轴等,在滚动条滚动时依旧能够显示,即重绘!!
解决方案
如果你肯采纳我的回答,我可以写一个完整的例子给你。不过一个问题我只能挑一样做给你。比如演示下网格线和滚动视图的绘制。如果要全回答,最好你分开问。
解决方案二:
就是GDI绘图,现在绘制后有什么具体的问题?
解决方案三:
void CQ185823View::OnDraw(CDC* pDC)
{
CQ185823Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CPen pen1(PS_SOLID, 1, RGB(191, 191, 191));
CPen pen2(PS_SOLID, 1, RGB(0, 0, 0));
for (int i = 0; i <= 400; i++)
{
if (i % 10 == 0)
{
RECT rect;
rect.left = 2001;
rect.right = 2001 + 100;
rect.top = i * 10;
rect.bottom = i * 10 + 100;
char num[10];
itoa(i / 10 - 20, num, 10);
pDC->DrawText(num, strlen(num), &rect, 0);
}
if (i % 10 != 0)
{
pDC->SelectObject(pen1);
}
else
{
pDC->SelectObject(pen2);
}
pDC->MoveTo(0, i * 10);
pDC->LineTo(4000, i * 10);
}
for (i = 0; i <= 400; i++)
{
if (i % 10 == 0)
{
RECT rect;
rect.left = i * 10;
rect.right = i * 10 + 100;
rect.top = 2001;
rect.bottom = 2001 + 100;
char num[10];
itoa(i / 10 - 20, num, 10);
pDC->DrawText(num, strlen(num), &rect, 0);
}
if (i % 10 != 0)
{
pDC->SelectObject(pen1);
}
else
{
pDC->SelectObject(pen2);
}
pDC->MoveTo(i * 10, 0);
pDC->LineTo(i * 10, 4000);
}
}
void CQ185823View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 4000;
SetScrollSizes(MM_TEXT, sizeTotal);
POINT pt;
RECT rect;
GetClientRect(&rect);
pt.x = 2000 - (rect.right - rect.left) / 2;
pt.y = 2000 - (rect.bottom - rect.top) / 2;
ScrollToPosition(pt);
}
时间: 2024-07-28 16:24:32