请教SetTextColor函数的用法

请教SetTextColor函数的用法,第1张

SetTextColor命令其功能: 设置指定设备环境(HDC)的字体颜色函数SetTextColor命令格式如下:WINGDIAPI COLORREF WINAPI SetTextColor(__in HDC hdc, __in COLORREF color)其中:hdc是当激掘前设备的句柄。color是设置当前设备字符输出颜色。

举个例子来说明做坦。调用这个函数的例子如下:

#001 //

#002 //界面显示输出.

#003 //

#004 //蔡军生 2007/08/13 QQ:9073204 深圳

#005 //

#006 void CCaiWinMsg::OnDraw(HDC hDC)

#007 {

#008 //

#009 std::wstring strShow(_T("C++窗口类的实现,2007-08-13"))

#010 TextOut(hDC,10,10,strShow.c_str(),(int)strShow.length())

#011

#012 //设置输出字符串的颜色.

#013 COLORREF crOld = SetTextColor(hDC,RGB(255,0,0))

#014 TextOut(hDC,10,30,strShow.c_str(),(int)strShow.length())

#015

#016 SetTextColor(hDC,RGB(0,255,0))

#017 TextOut(hDC,10,50,strShow.c_str(),(int)strShow.length())

#018

#019 SetTextColor(hDC,RGB(0,0,255))

#020 TextOut(hDC,10,70,strShow.c_str(),(int)strShow.length())

#021

#022 //

#023 SetTextColor(hDC,crOld)

#024 }

第13行设置字符的颜色为红色。

第16行设置字符的颜色明胡核为绿色。

第19行设置字符的颜色为蓝色。

第23行恢复原来的颜色,这个一定要记得做,否则后面显示会出错。

1:可设置范围值,支持负数值

2:可设置精确度,最大支持小数点后3位

3:可设置圆弧宽度

4:可设置开始旋转角度/结束旋转角度

5:可设置仪表盘的标题

6:可设置背景颜色/进度颜色/值颜色/文字颜色

7:自适应窗体拉伸,文字自动缩放

8:可自由拓展各种渐变色

9:可设置百分比模式,自动计樱巧宴算值换算成百分比

三、效果图

2e5ce1fa31550d7b88eecbbb8ac5197b.gif

四、头文件代码

#ifndef PROGRESSARC_H

#define PROGRESSARC_H

/**

* 百分比仪表盘控件 作者:feiyangqingyun(QQ:517216493) 2018-8-30

* 1:可设置范围值,支持负数值

* 2:可设置精确度,最大支持小数点后3位

* 3:可设置圆弧宽度

* 4:可设置开始旋转角度/结束旋转角度

* 5:可脊银设置仪表盘的标题

* 6:可设置背景颜色/进度颜色/值颜色宽棚/文字颜色

* 7:自适应窗体拉伸,文字自动缩放

* 8:可自由拓展各种渐变色

* 9:可设置百分比模式,自动计算值换算成百分比

*/

#include <QWidget>

#ifdef quc

#if (QT_VERSION <QT_VERSION_CHECK(5,7,0))

#include <QtDesigner/QDesignerExportWidget>

#else

#include <QtUiPlugin/QDesignerExportWidget>

#endif

class QDESIGNER_WIDGET_EXPORT ProgressArc : public QWidget

#else

class ProgressArc : public QWidget

#endif

{

Q_OBJECT

Q_PROPERTY(double minValue READ getMinValue WRITE setMinValue)

Q_PROPERTY(double maxValue READ getMaxValue WRITE setMaxValue)

Q_PROPERTY(double value READ getValue WRITE setValue)

Q_PROPERTY(int precision READ getPrecision WRITE setPrecision)

Q_PROPERTY(int startAngle READ getStartAngle WRITE setStartAngle)

Q_PROPERTY(int endAngle READ getEndAngle WRITE setEndAngle)

Q_PROPERTY(QColor arcColor READ getArcColor WRITE setArcColor)

Q_PROPERTY(QColor textColor READ getTextColor WRITE setTextColor)

Q_PROPERTY(QColor titleColor READ getTitleColor WRITE setTitleColor)

Q_PROPERTY(QColor baseColor READ getBaseColor WRITE setBaseColor)

Q_PROPERTY(QColor bgColor READ getBgColor WRITE setBgColor)

Q_PROPERTY(bool percent READ getPercent WRITE setPercent)

Q_PROPERTY(int arcWidth READ getArcWidth WRITE setArcWidth)

Q_PROPERTY(QString title READ getTitle WRITE setTitle)

public:

explicit ProgressArc(QWidget *parent = 0)

~ProgressArc()

protected:

void paintEvent(QPaintEvent *)

void drawArc(QPainter *painter)

void drawValue(QPainter *painter)

void drawTitle(QPainter *painter)

private:

double minValue //最小值

double maxValue //最大值

double value //目标值

int precision //精确度,小数点后几位

int startAngle//开始旋转角度

int endAngle //结束旋转角度

QColor arcColor //圆弧颜色

QColor textColor //文字颜色

QColor titleColor //标题颜色

QColor baseColor //基准颜色

QColor bgColor//背景颜色

bool percent //百分比模式

int arcWidth //圆弧宽度

QString title //标题

public:

double getMinValue()const

double getMaxValue()const

double getValue() const

int getPrecision() const

int getStartAngle() const

int getEndAngle() const

QColor getArcColor()const

QColor getTextColor() const

QColor getTitleColor() const

QColor getBaseColor() const

QColor getBgColor() const

bool getPercent() const

int getArcWidth() const

QString getTitle() const

QSize sizeHint()const

QSize minimumSizeHint() const

public Q_SLOTS:

//设置范围值

void setRange(double minValue, double maxValue)

void setRange(int minValue, int maxValue)

//设置最大最小值

void setMinValue(double minValue)

void setMaxValue(double maxValue)

//设置目标值

void setValue(double value)

void setValue(int value)

//设置精确度

void setPrecision(int precision)

//设置开始旋转角度

void setStartAngle(int startAngle)

//设置结束旋转角度

void setEndAngle(int endAngle)

//设置圆弧颜色

void setArcColor(const QColor &arcColor)

//设置文本颜色

void setTextColor(const QColor &textColor)

//设置标题颜色

void setTitleColor(const QColor &titleColor)

//设置基准颜色

void setBaseColor(const QColor &baseColor)

//设置背景颜色

void setBgColor(const QColor &bgColor)

//设置百分比模式

void setPercent(bool percent)

//设置圆弧宽度

void setArcWidth(int arcWidth)

//设置标题

void setTitle(const QString &title)

Q_SIGNALS:

void valueChanged(int value)

}

#endif // PROGRESSARC_H

五、核心代码

void ProgressArc::paintEvent(QPaintEvent *)

{

int width = this->width()

int height = this->height()

int side = qMin(width, height)

//绘制准备工作,启用反锯齿,平移坐标轴中心,等比例缩放

QPainter painter(this)

painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing)

//绘制背景

if (bgColor != Qt::transparent) {

painter.setPen(Qt::NoPen)

painter.fillRect(this->rect(), bgColor)

}

painter.translate(width / 2, height / 2)

painter.scale(side / 200.0, side / 200.0)

//绘制圆弧

drawArc(&painter)

//绘制当前值

drawValue(&painter)

//绘制标题

drawTitle(&painter)

}

void ProgressArc::drawArc(QPainter *painter)

{

int radius = 99 - arcWi


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

原文地址: http://outofmemory.cn/tougao/12133799.html

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

发表评论

登录后才能评论

评论列表(0条)

保存