你是想做成QQ截图那种效果,画好矩形后,还可以调节位置大小。
MFC有个CRectTracker可以实现你想要的效果。
或者你可以上网搜索下 MFC橡皮筋矩形
也可以实现你想要的效果(推荐,这算法都是自己实现控制的)比较灵活,
我就自己实现了一个截图程序,不过算法不是网上的,自己写的,效率还是比较高的。
One possible implementation of this class is shown below:
// Rectanglehclass Rectangle { private: double width; // width of the rectangle
double height; // height of the rectangle
double x; // x-coordinate of the top-left corner
double y; // y-coordinate of the top-left corner
public: // default constructor that creates a unit square at (0, 0)
Rectangle(); // constructor that creates a rectangle with given width, height and coordinates
Rectangle(double w, double h, double x1, double y1); // accessor methods for data fields
double getWidth() const; double getHeight() const; double getX() const; double getY() const; // mutator methods for data fields
void setWidth(double w); void setHeight(double h); void setX(double x1); void setY(double y1); // method that returns the area of the rectangle
double getArea() const; // method that returns the perimeter of the rectangle
double getPerimeter() const;
};// Rectanglecpp#include "Rectangleh"// default constructor that creates a unit square at (0, 0)Rectangle::Rectangle() {
width = 1;
height = 1;
x = 0;
y = 0;
}// constructor that creates a rectangle with given width, height and coordinatesRectangle::Rectangle(double w, double h, double x1, double y1) {
width = w;
height = h;
x = x1;
y = y1;
}// accessor methods for data fieldsdouble Rectangle::getWidth() const { return width;
}double Rectangle::getHeight() const { return height;
}double Rectangle::getX() const { return x;
}double Rectangle::getY() const { return y;
}// mutator methods for data fieldsvoid Rectangle::setWidth(double w) {
width = w;
}void Rectangle::setHeight(double h) {
height = h;
}void Rectangle::setX(double x1) {
x = x1;
}void Rectangle::setY(double y1) {
y = y1;
}// method that returns the area of the rectangledouble Rectangle::getArea() const { return width height;
}// method that returns the perimeter of the rectangledouble Rectangle::getPerimeter() const { return (width + height) 2;
}
You can use this class to create objects representing rectangles and call their methods to get their properties For example:
#include <iostream>#include "Rectangleh"using namespace std;int main(){ // create a rectangle object with width=3, height=4 and coordinates=(2,-5)
Rectangle r(30 ,40 ,20 ,-50); // print its area and perimeter
cout << "The area of r is " << rgetArea() << endl;
cout << "The perimeter of r is " << rgetPerimeter() << endl; return 0;
}
获取静态文本框的坐标位置,比如一个矩形CRect(x1,y1,x2,y2)
CBrush mbr(RGB(0,0,0));
hDCMemFillRect(CRect(x3,y3,x4,y4),&mbr);//hDCMem为当前界面的CDC
CRect本身是一个类,这个类封装的内容为窗口系统中的一个物理区域——屏幕上的某一个矩形块,当然也可以理解为你说的窗口区域啦,
分辨率是为了表示某个显示区域的清晰度。某一个固定大小的显示区域比如你的144的电脑屏幕,使用时规定在屏幕上画出1920条竖线和1280条横线,那么这个屏幕就可以看成是1920X1280个方格组成的了,这时在显示时告诉屏幕你在第Y行第X列上用颜色XXX进行显示,在Y+1行X+1列用另外一个颜色显示。很显然,同样大小的屏幕,划分的方格越多,显示就越精细。
思路: 在WM_LBUTTONDOWN消息响应中保存鼠标按下时的位置, 在WM_LBUTTONUP消息响应中保存鼠标抬起时的位置, 并用GetDC获取当前DC, 用Rectangle函数画出矩形
以上就是关于MFC用鼠标画出矩形后如何用鼠标调整矩形框大小与位置全部的内容,包括:MFC用鼠标画出矩形后如何用鼠标调整矩形框大小与位置、C++定义坐标并求矩形周长面积、mfc静态文本框中靠右画矩形的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)