第11章 GUI Page417~418 步骤五 支持方框
2023-12-23 06:33:46
运行效果:
关键代码:
添加头文件:item_rectangle.hpp
//item_rectangle.hpp
#ifndef ITEM_RECTANGLE_HPP_INCLUDED
#define ITEM_RECTANGLE_HPP_INCLUDED
#include "item_i.hpp"
class RectangleItem : public IItem
{
public:
RectangleItem()
: _startPosition(0, 0), _endPosition(0, 0)
{}
virtual void Draw(wxDC& dc) const;
void OnDrawStart(wxPoint const& point) override
{
_startPosition = point;
}
virtual void OnDrawEnd(wxPoint const& point)
{
_endPosition = point;
}
private:
wxPoint _startPosition, _endPosition;
};
#endif // ITEM_RECTANGLE_HPP_INCLUDED
添加源文件:item_rectangle.cpp
//item_rectangle.cpp
#include "item_rectangle.hpp"
#include <cmath> //需要一些数学函数abs(绝对值),min(二者最小)
void RectangleItem::Draw(wxDC& dc) const
{
//得到左上角的坐标
int left_x = std::min(_startPosition.x, _endPosition.x);
int top_y = std::min(_startPosition.y, _endPosition.y);
//得到长和宽(绝对值)
int width = std::abs(_endPosition.x - _startPosition.x);
int height = std::abs(_endPosition.y - _startPosition.y);
dc.DrawRectangle(left_x, top_y, width, height);
}
添加创建矩形的代码
CreateNewItem()函数中 155~158行
文章来源:https://blog.csdn.net/yanzhenxi/article/details/135163526
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!