直接上代码:在WINDOWS上可以实现反走样,为什么在LINUX下不行,可是我看DEMON中窗口上绘制也可以反走样,唯独我输出到图片中为何不行!
#include "stdafx.h"
#include <QCoreApplication.h>
#include <QApplication.h>
#include <QPixmap.h>
#include <QPainter.h>
#include <iostream>
#include "qtextcodec.h "
#include "qobject.h"
using namespace std;
#ifdef _DEBUG
#pragma comment(lib,"QtCored4.lib")
#pragma comment(lib,"QtGuid4.lib")
#else
#pragma comment(lib,"QtCore4.lib")
#pragma comment(lib,"QtGui4.lib")
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPainter qPaint;
QPixmap *qPixmap = new QPixmap(700,500);
qPixmap->fill(Qt::green);
qPaint.begin(qPixmap);
qPaint.setRenderHint(QPainter::Antialiasing, true);
QPen pen(QColor(255,0,0),1);
qPaint.setPen(pen);
//qPaint.drawLine(0,150,500,160);
QString string = "我是中国人";
QTextCodec* gbk_codec = QTextCodec::codecForName("system");
QString gbk_string = gbk_codec->toUnicode(string.toLatin1());
QFont font;
font.setFamily("宋体");
font.setPixelSize(100);
//font.setUnderline(true);
//font.setStrikeOut(true);
QFontMetricsF fontMetrics(font);
QRectF rect = fontMetrics.boundingRect(QString("我是中国人"));
qPaint.setFont(font);
qPaint.drawText(0,150 - fontMetrics.descent(),gbk_string);
qPaint.drawRect(0,50,500,100);
qPaint.drawText(0,275,gbk_string);
qPaint.drawRect(0,175,500,100);
gbk_string = gbk_codec->toUnicode("我");
qPaint.drawText(0,400,gbk_string);
gbk_string = gbk_codec->toUnicode("是");
qPaint.drawText(100,400,gbk_string);
gbk_string = gbk_codec->toUnicode("中");
qPaint.drawText(200,400,gbk_string);
gbk_string = gbk_codec->toUnicode("国");
qPaint.drawText(300,400,gbk_string);
gbk_string = gbk_codec->toUnicode("人");
qPaint.drawText(400,400,gbk_string);
qPaint.drawRect(0,300,500,100);
/*QFont font("宋体", 35, 50, false);
font = QFont(font, qPaint.device());
QFontMetricsF fontMetrics(font);
QRectF rect = fontMetrics.boundingRect(QString("我是中国人"));
qPaint.setFont(font);
qPaint.drawText(QPointF(0, 150),
QString("我是中国人"));*/
qPaint.end();
qPixmap->save("C:/a.jpg","JPEG");
qPixmap->save("C:/a.png","PNG");
qPixmap->save("C:/a.gif","GIF");
qPixmap->save("C:/a.bmp","BMP");
if(qPixmap)
{
delete qPixmap;
qPixmap = NULL;
}
return a.exec();
return 0;
}