MFC用鼠标画出矩形后如何用鼠标调整矩形框大小与位置

MFC用鼠标画出矩形后如何用鼠标调整矩形框大小与位置,第1张

你是想做成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静态文本框中靠右画矩形的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9644846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存