第11章 GUI Page419~420 步骤五 支持圆

运行效果:

第11章 GUI Page419~420 步骤五 支持圆_第1张图片

关键代码:

新增头文件

//item_circle.hpp
#ifndef ITEM_CIRCLE_HPP_INCLUDED
#define ITEM_CIRCLE_HPP_INCLUDED

#include "item_i.hpp"

class CircleItem : public IItem
{
public:
    CircleItem()
        : _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_CIRCLE_HPP_INCLUDED

新增源文件

//item_circle.cpp

#include 
#include "item_circle.hpp"

int CalcRadius(wxPoint const& start, wxPoint const& end)
{
    int dx = end.x - start.x;
    int dy = end.y - start.y;

    return std::sqrt(dx * dx + dy * dy);
}

void CircleItem::Draw(wxDC& dc) const
{
    wxCoord radius = CalcRadius(_startPosition, _endPosition);
    dc.DrawCircle(_startPosition, radius);
}

添加创建圆的宏

第11章 GUI Page419~420 步骤五 支持圆_第2张图片

你可能感兴趣的:(《白话C++》第11章,我的小画家,《白话C++》学习,c++)