知道一个Rect的各顶点的坐标,如何画出

amartapple 2003-06-02 04:06:29
要在一副图片上框出一个区域,现在这个区域的各个顶点的坐标已经求出,请问如何用红色画出这个区域

如:
Rcet.Top=20;
Rcet.Bottom=50;
Rect.Left=100;
Rect.Right=200;

如何画出这个Rect,谢谢
...全文
191 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiniaoliang 2003-06-05
  • 打赏
  • 举报
回复
CDC *pDC=GetDC();
CPen pen,
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen* oldpen = pDC->SelectObject(&pen);
pDC->Rectangle(&rect);
pDC->SelectObject(oldpen);
amartapple 2003-06-05
  • 打赏
  • 举报
回复
我原来就是这样想的,不过不知道怎么写
bbahh 2003-06-04
  • 打赏
  • 举报
回复
实在不行,就用最简单的MoveTo() LineTo()函数。也很简单。
何必浪费太多时间找什么特别方法呢。
amartapple 2003-06-04
  • 打赏
  • 举报
回复
感谢大家,可是这样画出来的是一个区域,我只想画出边框
JerryGR 2003-06-04
  • 打赏
  • 举报
回复
哥们,简单的事情为什么要复杂化呢?
不要故弄玄虚好不好?

CDC *pDC=GetDC();
CBrush redbr(RGB(255,0,0));
pDC->FillRect(&rect, &redbr);

That is OK.
syl08341 2003-06-04
  • 打赏
  • 举报
回复
agree feiniaoliang(飞鸟良)
下面程序通过测试
CClientDC dc(this);
CRect rect(0, 0, 100, 100);
CBrush brush;
brush.CreateSolidBrush(RGB(192,192,192));
dc.FillRect(&rect, &brush);
Invalidate();
lightwell 2003-06-04
  • 打赏
  • 举报
回复
GetDC();
amartapple 2003-06-04
  • 打赏
  • 举报
回复
hdc 如何获得
feiniaoliang 2003-06-04
  • 打赏
  • 举报
回复
关键就是这:

hBrush=CreateSolidBrush(RGB(255,0,0));
FillRect(hdc,&rect,hBrush);
amartapple 2003-06-04
  • 打赏
  • 举报
回复
up
amartapple 2003-06-04
  • 打赏
  • 举报
回复
看不懂呀,有简洁些的么
commandos 2003-06-02
  • 打赏
  • 举报
回复
我这里有一个,vc++6 +win98调试通过,用win32api sdk 写的。。
你看满意不??
#include <windows.h>
#include <math.h>

LRESULT CALLBACK WndProc (HWND ,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hprevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT("DrawRect");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;

wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName =szAppName;

if (!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("Program requires windows NT!"),szAppName,MB_ICONERROR);
return 0;
}

hwnd=CreateWindow(szAppName,TEXT("DrawRect"),
WS_OVERLAPPEDWINDOW|WS_MAXIMIZE,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);

while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static POINT point1,point2;
HDC hdc;
RECT rect;
HBRUSH hBrush;
PAINTSTRUCT ps;

switch (message)
{
case WM_LBUTTONDOWN:
point1.x =LOWORD(lParam);
point1.y =HIWORD(lParam);
return 0;

case WM_LBUTTONUP:
point2.x =LOWORD(lParam);
point2.y =HIWORD(lParam);
InvalidateRect(hwnd,NULL,TRUE);
return 0;

case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);

rect.left =point1.x ;
rect.top =point1.y;
rect.right =point2.x ;
rect.bottom =point2.y;

hBrush=CreateSolidBrush(RGB(255,0,0));
FillRect(hdc,&rect,hBrush);

EndPaint(hwnd,&ps);

return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc (hwnd,message,wParam,lParam);
}

amartapple 2003-06-02
  • 打赏
  • 举报
回复
up

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧