单击更改画布的大小
Change size of canvas by click
本文关键字:单击 更新时间:2023-10-16
在画布方法MainForm -> Canvas -> Ellipse(350,100,550,300)
的帮助下制作了一个圆圈。问题是通过单击"+"或"-"按钮来更改画布的大小。有什么方法吗?
调整椭圆大小:
-
创建一些全局或Form成员变量:
int x0=350,y0=100,x1=550,y1=300;
- 这包含椭圆参数
-
创建一些绘图功能(成员是否形成)
-
例如:
void draw(TCanvas *scr) { scr->Pen->Color=clWhite; scr->Brush->Color=clBlack; scr->FillRect(TRect(0,0,MainForm->ClientWidth,MainForm->ClientHeight)); scr->Brush->Color=clBlue; scr->Ellipse(x0,y0,x1,y1); }
-
为主窗体创建关于调整大小和绘制的事件,并添加绘图(Canvas);呼叫亭
- 会在需要时重新绘制表单
-
-
创建(鼠标)点击事件
- 内部有保持鼠标状态的调用变量
X,Y,Shift
- 所以只需将其添加到
x1=X; y1=Y; draw(Canvas);
- 内部有保持鼠标状态的调用变量
仅此而已。。。希望我没有犯一些拼写错误(直接从这里的记忆中写出来)
如果你需要调整表单的大小,那么:
- 而不是
x1=X, y1=Y;
ClientWidth=X+32; ClientHeight=Y+32;
- 或使用
SetBounds(Left,Top,X+32,Y+32);
+32
是调整大小的区域,以确保您也可以放大
[edit1]确实错过了+/-按钮(我假设鼠标调整大小),所以以下是按钮
-
点击+按钮创建事件:
-
保持现有代码不变,并将此添加到事件代码中
int cx=(x0+x1)>>1,ax=(x1-cx); ax+=16; x0=cx-ax; x1=cx+ax; int cy=(y0+y1)>>1,ay=(y1+cy); ay+=16; y0=cy-ay; y1=cy+ay; draw(Canvas);
-
每次点击都会将展位半轴放大16
-
-
创建按钮点击事件:
-
代码类似于+
int cx=(x0+x1)>>1,ax=(x1-cx); ax-=16; if (ax<1) ax=1; x0=cx-ax; x1=cx+ax; int cy=(y0+y1)>>1,ay=(y1+cy); ay-=16; if (ay<1) ay=1; y0=cy-ay; y1=cy+ay; draw(Canvas);
-
每次点击将使展位半轴缩小16,并在尺寸为1的上停止
-
如果您需要调整表单大小,请调整上面的代码。。。类似于鼠标事件示例
相关文章:
- QTreeView幻灯片多选后无法使用单击选择
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- QML TableView 使用 QtQuick.Controls 2 单击行
- ImGui 在单击按钮后冻结
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 我想使用此代码单击某个特定窗口,但它无法正常工作
- 如何在QSplashScreen中禁用鼠标单击
- 单击一个按钮后创建一个按钮
- C++鼠标单击时的屏幕截图不起作用
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 标签检测鼠标单击 c++
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 在单击 QPushButton 时调用带有参数的函数
- 如何在单击按钮FLTK的确切时刻获得小部件的值
- 如何使用鼠标单击选择多个 QLabel 对象?
- WM_PAINT基于按钮单击
- 在使用 c++ 的 win32 api 中,我想跟踪双击和三次单击等
- 如何获得鼠标光标连接时按下左键单击和在C++中释放左键单击时?
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭