You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Include/iBase/iUtils/ZxDrawHelper.h

95 lines
3.6 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <QRectF>
#include <QPainter>
#include "ZxDot.h"
#include <LlUtils_global.h>
/// 一些简单而通用的图元绘制
class I_UTILSSHARED_EXPORT ZxDrawHelper
{
public:
ZxDrawHelper();
~ZxDrawHelper();
// 返回DRAWING_TYPE的类型描述
static QStringList getDotStyleDescs();
/// 绘制焦点
static void drawFocus(QPainter* painter,QRectF rect);
/// 绘制点
static void drawPoint(QPainter* painter,QPointF point[],int cnt,int nDotStyle,double fRadius,bool isFill,QColor clr);
static void drawPoint(QPainter* painter, QPointF point[], int cnt, ZxDot o);
/// 绘制点
static void drawPoint(QPainter* painter,QPointF point,int nDotStyle,double fRadius,bool isFill,QColor clr);
static void drawPoint(QPainter* painter, QPointF point, ZxDot o);
/// 绘制圆
static void drawCircle(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制正方形
static void drawSquare(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制上三角
static void drawUpTriangle(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制下三角
static void drawDownTriangle(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制左三角
static void drawLeftTriangle(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制右三角
static void drawRightTriangle(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制菱形
static void drawDiamond(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制叉
static void drawCross(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制十字架
static void drawPlus(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制六角星
static void drawStar(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制梯形塔台
static void drawRig(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr);
/// 绘制带线的三角形
static void drawTriangleWithLine(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr,double fAngle = 0);
/// 绘制带线的圆
static void drawCricleWithLine(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr,double fAngle = 0);
/// 绘制箭头
static void drawArrow(QPainter* painter,QPointF point,double fRadius,bool isFill,QColor clr,double fAngle = 0);
/// 求两条线段的夹角
static double straightAngle(QPointF ptLine1Start,QPointF ptLine1End,QPointF ptLine2Start,QPointF ptLine2End);
/// 绘制文本
static void drawText(QPainter* painter, const QRectF& rt, \
int flags, const QString& s, bool bTrimStr = true);
static void drawText(QPainter* painter, const QPointF& pt, \
const QString& s, bool bTrimStr = true); //该函数用的很少,不建议使用
///////////////////////////////////////////////////
// TODO 如下几个函数可以考虑放入zxAlgMath类库之中目前为了减少类库依赖暂时放在此处
/// 点是否在附近
static bool isPointNearPoint(QPointF point1,QPointF point2,double nMinDist=1.f);
/// 点是否在直线附近
static bool isPointNearLine(QPointF pt1,QPointF pt2,QPointF pt3,double nMinDist=1.f);
static double pointToLineDis(QPointF pt1,QPointF pt2,QPointF pt3);
///////////////////////////////////////////////////
};