本文整理汇总了C++中QPainter::fillRect方法的典型用法代码示例。如果您正苦于以下问题:C++ QPainter::fillRect方法的具体用法?C++ QPainter::fillRect怎么用?C++ QPainter::fillRect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QPainter
的用法示例。
在下文中一共展示了QPainter::fillRect方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: paintEvent
void CurveWidget::paintEvent(QPaintEvent * /* event */)
{
QPainter *painter = new QPainter(this);
painter->setRenderHint(QPainter::Antialiasing, true);
static const QColor BASE_COLOR(Qt::black);
static const QColor AXE_COLOR(Qt::black);
QColor EXTREMITY_COLOR(isEnabled()? Qt::red : Qt::gray);
QColor CURVE_COLOR(isEnabled()? Qt::darkRed : Qt::gray);
QColor BREAKPOINT_COLOR(isEnabled()? Qt::blue : Qt::gray);
static const QColor MOVING_BREAKPOINT_COLOR(Qt::darkBlue);
static const QColor UNACTIVE_COLOR(Qt::darkGray);
// Abcisses line
QPen penXAxis((_unactive) ? UNACTIVE_COLOR : AXE_COLOR);
painter->setPen(penXAxis);
painter->drawLine(0, _xAxisPos, width(), _xAxisPos);
painter->setPen(BASE_COLOR);
vector<float>::iterator it;
map<float, pair<float, float> >::iterator it2;
float pointSizeX = 6;
float pointSizeY = 6;
QPointF curPoint(0, 0);
QPointF precPoint(-1, -1);
unsigned int i = 0;
for (it = _abstract->_curve.begin(); it != _abstract->_curve.end(); ++it)
{
curPoint = absoluteCoordinates(QPointF(1, *it));
curPoint.setX(i * _interspace * _scaleX);
if (it == _abstract->_curve.begin())
{ // First point is represented by a specific color
painter->fillRect(QRectF(curPoint - QPointF(pointSizeX / 2., pointSizeY / 2.), QSizeF(pointSizeX, pointSizeY)), EXTREMITY_COLOR);
}
if (precPoint != QPointF(-1, -1))
{
QPen pen(_unactive ? UNACTIVE_COLOR : CURVE_COLOR);
pen.setWidth(_unactive ? 1 : 2);
painter->setPen(pen);
painter->drawLine(precPoint, curPoint); // Draw lines between values
painter->setPen(BASE_COLOR);
}
precPoint = curPoint;
i++;
}
// Last point is represented by a specific color
if (!_unactive)
{
painter->fillRect(QRectF(curPoint - QPointF(pointSizeX / 2., pointSizeY / 2.),
QSizeF(pointSizeX, pointSizeY)),
EXTREMITY_COLOR);
precPoint = QPointF(-1, -1);
for (it2 = _abstract->_breakpoints.begin(); it2 != _abstract->_breakpoints.end(); ++it2)
{
curPoint = absoluteCoordinates(QPointF(it2->first, it2->second.first));
// Breakpoints are drawn with rectangles
painter->fillRect(QRectF(curPoint - QPointF(pointSizeX / 2., pointSizeY / 2.),
QSizeF(pointSizeX, pointSizeY)),
_unactive ? UNACTIVE_COLOR : BREAKPOINT_COLOR);
precPoint = curPoint;
}
if (_movingBreakpointX != -1 && _movingBreakpointY != -1)
{
QPointF cursor = absoluteCoordinates(QPointF(_movingBreakpointX, _movingBreakpointY));
// If a breakpoint is currently being moved, it is represented by a rectangle
painter->fillRect(QRectF(cursor - QPointF(pointSizeX / 2., pointSizeY / 2.),
QSizeF(pointSizeX, pointSizeY)),
_abstract->_interpolate ? MOVING_BREAKPOINT_COLOR : UNACTIVE_COLOR);
}
}
//text : minY, maxY
if(_minYModified || _maxYModified)
{
painter->save();
QFont textFont;
textFont.setPointSize(9.);
painter->setFont(textFont);
painter->setPen(QPen(Qt::black));
if(_minYModified)
{
painter->drawText(*_minYTextRect,QString("%1").arg(_minY));
_minYModified = false;
}
else if(_maxYModified)
//.........这里部分代码省略.........
示例2: zoomTo
// private
void kpMainWindow::zoomTo (int zoomLevel, bool centerUnderCursor)
{
#if DEBUG_KP_MAIN_WINDOW
kdDebug () << "kpMainWindow::zoomTo (" << zoomLevel << ")" << endl;
#endif
if (zoomLevel <= 0)
zoomLevel = m_mainView ? m_mainView->zoomLevelX () : 100;
// mute point since the thumbnail suffers from this too
#if 0
else if (m_mainView && m_mainView->zoomLevelX () % 100 == 0 && zoomLevel % 100)
{
if (KMessageBox::warningContinueCancel (this,
i18n ("Setting the zoom level to a value that is not a multiple of 100% "
"results in imprecise editing and redraw glitches.\n"
"Do you really want to set to zoom level to %1%?")
.arg (zoomLevel),
QString::null/*caption*/,
i18n ("Set Zoom Level to %1%").arg (zoomLevel),
"DoNotAskAgain_ZoomLevelNotMultipleOf100") != KMessageBox::Continue)
{
zoomLevel = m_mainView->zoomLevelX ();
}
}
#endif
int index = 0;
QValueVector <int>::Iterator it = m_zoomList.begin ();
while (index < (int) m_zoomList.count () && zoomLevel > *it)
it++, index++;
if (zoomLevel != *it)
m_zoomList.insert (it, zoomLevel);
sendZoomListToActionZoom ();
m_actionZoom->setCurrentItem (index);
if (viewMenuDocumentActionsEnabled ())
{
m_actionActualSize->setEnabled (zoomLevel != 100);
m_actionZoomIn->setEnabled (m_actionZoom->currentItem () < (int) m_zoomList.count () - 1);
m_actionZoomOut->setEnabled (m_actionZoom->currentItem () > 0);
}
if (m_viewManager)
m_viewManager->setQueueUpdates ();
if (m_scrollView)
{
m_scrollView->setUpdatesEnabled (false);
if (m_scrollView->viewport ())
m_scrollView->viewport ()->setUpdatesEnabled (false);
}
if (m_mainView)
{
m_mainView->setUpdatesEnabled (false);
if (m_scrollView && m_scrollView->viewport ())
{
// Ordinary flicker is better than the whole view moving
QPainter p (m_mainView);
p.fillRect (m_mainView->rect (),
m_scrollView->viewport ()->colorGroup ().background ());
}
}
if (m_scrollView && m_mainView)
{
#if DEBUG_KP_MAIN_WINDOW && 1
kdDebug () << "\tscrollView contentsX=" << m_scrollView->contentsX ()
<< " contentsY=" << m_scrollView->contentsY ()
<< " contentsWidth=" << m_scrollView->contentsWidth ()
<< " contentsHeight=" << m_scrollView->contentsHeight ()
<< " visibleWidth=" << m_scrollView->visibleWidth ()
<< " visibleHeight=" << m_scrollView->visibleHeight ()
<< " oldZoomX=" << m_mainView->zoomLevelX ()
<< " oldZoomY=" << m_mainView->zoomLevelY ()
<< " newZoom=" << zoomLevel
<< " mainViewX=" << m_scrollView->childX (m_mainView)
<< " mainViewY=" << m_scrollView->childY (m_mainView)
<< endl;
#endif
// TODO: when changing from no scrollbars to scrollbars, Qt lies about
// visibleWidth() & visibleHeight() (doesn't take into account the
// space taken by the would-be scrollbars) until it updates the
// scrollview; hence the centring is off by about 5-10 pixels.
// TODO: use visibleRect() for greater accuracy?
int viewX, viewY;
//.........这里部分代码省略.........
示例3: paintEvent
void Window::paintEvent(QPaintEvent *)
{
QPainter painter;
painter.begin(this);
int h = 216 / 5;
QRect r = QRect(0, 0, 160, h);
painter.fillRect(r, Qt::white);
painter.setPen(Qt::black);
painter.drawText(r, Qt::AlignCenter, QLatin1String("white"));
r = QRect(0, h, 160, h);
painter.fillRect(r, Qt::red);
painter.drawText(r, Qt::AlignCenter, QLatin1String("red"));
r = QRect(0, h*2, 160, h);
painter.fillRect(r, Qt::green);
painter.drawText(r, Qt::AlignCenter, QLatin1String("green"));
r = QRect(0, h*3, 160, h);
painter.fillRect(r, Qt::blue);
painter.setPen(Qt::white);
painter.drawText(r, Qt::AlignCenter, QLatin1String("blue"));
r = QRect(160, 0, 160, h);
painter.fillRect(r, Qt::black);
painter.drawText(r, Qt::AlignCenter, QLatin1String("black"));
r = QRect(160, h, 160, h);
painter.fillRect(r, Qt::darkRed);
painter.drawText(r, Qt::AlignCenter, QLatin1String("darkRed"));
r = QRect(160, h*2, 160, h);
painter.fillRect(r, Qt::darkGreen);
painter.drawText(r, Qt::AlignCenter, QLatin1String("darkGreen"));
r = QRect(160, h*3, 160, h);
painter.fillRect(r, Qt::darkBlue);
painter.drawText(r, Qt::AlignCenter, QLatin1String("darkBlue"));
r = QRect(320, 0, 160, h);
painter.fillRect(r, Qt::cyan);
painter.setPen(Qt::black);
painter.drawText(r, Qt::AlignCenter, QLatin1String("cyan"));
r = QRect(320, h, 160, h);
painter.fillRect(r, Qt::magenta);
painter.drawText(r, Qt::AlignCenter, QLatin1String("magenta"));
r = QRect(320, h*2, 160, h);
painter.fillRect(r, Qt::yellow);
painter.drawText(r, Qt::AlignCenter, QLatin1String("yellow"));
r = QRect(320, h*3, 160, h);
painter.fillRect(r, Qt::gray);
painter.setPen(Qt::white);
painter.drawText(r, Qt::AlignCenter, QLatin1String("gray"));
r = QRect(480, 0, 160, h);
painter.fillRect(r, Qt::darkCyan);
painter.drawText(r, Qt::AlignCenter, QLatin1String("darkCyan"));
r = QRect(480, h, 160, h);
painter.fillRect(r, Qt::darkMagenta);
painter.drawText(r, Qt::AlignCenter, QLatin1String("darkMagenta"));
r = QRect(480, h*2, 160, h);
painter.fillRect(r, Qt::darkYellow);
painter.drawText(r, Qt::AlignCenter, QLatin1String("darkYellow"));
r = QRect(480, h*3, 160, h);
painter.fillRect(r, Qt::darkGray);
painter.drawText(r, Qt::AlignCenter, QLatin1String("darkGray"));
r = QRect(0, h*4, 640, h);
painter.fillRect(r, Qt::lightGray);
painter.setPen(Qt::black);
painter.drawText(r, Qt::AlignCenter, QLatin1String("lightGray"));
painter.end();
}
示例4: if
ImageArea::ImageArea(const bool &isOpen, const QString &filePath, QWidget *parent) :
QWidget(parent), mIsEdited(false), mIsPaint(false), mIsResize(false)
{
setMouseTracking(true);
mRightButtonPressed = false;
mFilePath = QString();
mOpenFilter = "Windows Bitmap(*.bmp)";
mSaveFilter = "Windows Bitmap(*.bmp)";
initializeImage();
mZoomFactor = 1;
mAdditionalTools = new AdditionalTools(this, this->parent());
if(isOpen && filePath.isEmpty())
{
open();
}
else if(isOpen && !filePath.isEmpty())
{
open(filePath);
}
else
{
int width, height;
width = Data::Instance()->getBaseSize().width();
height = Data::Instance()->getBaseSize().height();
if (Data::Instance()->getIsInitialized() &&
Data::Instance()->getIsAskCanvasSize())
{
QClipboard *globalClipboard = QApplication::clipboard();
QImage mClipboardImage = globalClipboard->image();
if (!mClipboardImage.isNull())
{
width = mClipboardImage.width();
height = mClipboardImage.height();
}
mAdditionalTools->resizeCanvas(width, height);
mIsEdited = false;
}
QPainter *painter = new QPainter(mImage);
painter->fillRect(0, 0, width, height, Qt::white);
painter->end();
resize(mImage->rect().right() + 6,
mImage->rect().bottom() + 6);
mFilePath = QString("");
}
SelectionInstrument *selectionInstrument = new SelectionInstrument(this);
connect(selectionInstrument, SIGNAL(sendEnableCopyCutActions(bool)), this, SIGNAL(sendEnableCopyCutActions(bool)));
connect(selectionInstrument, SIGNAL(sendEnableSelectionInstrument(bool)), this, SIGNAL(sendEnableSelectionInstrument(bool)));
mInstrumentsHandlers.fill(0, (int)INSTRUMENTS_COUNT);
mInstrumentsHandlers[CURSOR] = selectionInstrument;
mInstrumentsHandlers[PEN] = new PencilInstrument(this);
mInstrumentsHandlers[LINE] = new LineInstrument(this);
mInstrumentsHandlers[ERASER] = new EraserInstrument(this);
mInstrumentsHandlers[RECTANGLE] = new RectangleInstrument(this);
mInstrumentsHandlers[ELLIPSE] = new EllipseInstrument(this);
mInstrumentsHandlers[FILL] = new FillInstrument(this);
mInstrumentsHandlers[CURVELINE] = new CurveLineInstrument(this);
}
示例5: GenPreview
void FDialogPreview::GenPreview(QString name)
{
QPixmap pm;
QString Buffer = "";
updtPix();
if (name.isEmpty())
return;
QFileInfo fi = QFileInfo(name);
if (fi.isDir())
return;
int w = pixmap()->width();
int h = pixmap()->height();
bool mode = false;
QString ext = fi.suffix().toLower();
QString formatD(FormatsManager::instance()->extensionListForFormat(FormatsManager::IMAGESIMGFRAME, 1));
QStringList formats = formatD.split("|");
formats.append("pat");
formats.removeAll("pdf");
QStringList allFormatsV = LoadSavePlugin::getExtensionsForPreview(FORMATID_FIRSTUSER);
if (ext.isEmpty())
ext = getImageType(name);
if (formats.contains(ext.toUtf8()))
{
ScImage im;
//No doc to send data anyway, so no doc to get into scimage.
CMSettings cms(0, "", Intent_Perceptual);
cms.allowColorManagement(false);
if (im.loadPicture(name, 1, cms, ScImage::Thumbnail, 72, &mode))
{
int ix,iy;
if ((im.imgInfo.exifDataValid) && (!im.imgInfo.exifInfo.thumbnail.isNull()))
{
ix = im.imgInfo.exifInfo.width;
iy = im.imgInfo.exifInfo.height;
}
else
{
ix = im.width();
iy = im.height();
}
int xres = im.imgInfo.xres;
int yres = im.imgInfo.yres;
QString tmp = "";
QString tmp2 = "";
QImage im2 = im.scaled(w - 5, h - 44, Qt::KeepAspectRatio, Qt::SmoothTransformation);
QPainter p;
QBrush b(QColor(205,205,205), IconManager::instance()->loadPixmap("testfill.png"));
// Qt4 FIXME imho should be better
pm = *pixmap();
p.begin(&pm);
p.fillRect(0, 0, w, h-44, b);
p.fillRect(0, h-44, w, 44, QColor(255, 255, 255));
p.drawImage((w - im2.width()) / 2, (h - 44 - im2.height()) / 2, im2);
p.drawText(2, h-29, tr("Size:")+" "+tmp.setNum(ix)+" x "+tmp2.setNum(iy));
if (!(extensionIndicatesPDF(ext) || extensionIndicatesEPSorPS(ext)))
p.drawText(2, h-17, tr("Resolution:")+" "+tmp.setNum(xres)+" x "+tmp2.setNum(yres)+" "+ tr("DPI"));
QString cSpace;
if ((extensionIndicatesPDF(ext) || extensionIndicatesEPSorPS(ext)) && (im.imgInfo.type != ImageType7))
cSpace = tr("Unknown");
else
cSpace=colorSpaceText(im.imgInfo.colorspace);
p.drawText(2, h-5, tr("Colorspace:")+" "+cSpace);
p.end();
setPixmap(pm);
repaint();
}
}
else if (allFormatsV.contains(ext.toUtf8()))
{
FileLoader *fileLoader = new FileLoader(name);
int testResult = fileLoader->testFile();
delete fileLoader;
if ((testResult != -1) && (testResult >= FORMATID_FIRSTUSER))
{
const FileFormat * fmt = LoadSavePlugin::getFormatById(testResult);
if( fmt )
{
QImage im = fmt->readThumbnail(name);
if (!im.isNull())
{
QString desc = tr("Size:")+" ";
desc += value2String(im.text("XSize").toDouble(), PrefsManager::instance()->appPrefs.docSetupPrefs.docUnitIndex, true, true);
desc += " x ";
desc += value2String(im.text("YSize").toDouble(), PrefsManager::instance()->appPrefs.docSetupPrefs.docUnitIndex, true, true);
im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
QPainter p;
QBrush b(QColor(205,205,205), IconManager::instance()->loadPixmap("testfill.png"));
pm = *pixmap();
p.begin(&pm);
p.fillRect(0, 0, w, h-21, b);
p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
p.drawText(2, h-5, desc);
p.end();
setPixmap(pm);
repaint();
}
}
}
//.........这里部分代码省略.........
示例6: if
ImageArea::ImageArea(const bool &isOpen, const QString &filePath, QWidget *parent) :
QWidget(parent), mIsEdited(false), mIsPaint(false), mIsResize(false)
{
setMouseTracking(true);
mRightButtonPressed = false;
mFilePath.clear();
makeFormatsFilters();
initializeImage();
mZoomFactor = 1;
mAdditionalTools = new AdditionalTools(this);
mUndoStack = new QUndoStack(this);
mUndoStack->setUndoLimit(DataSingleton::Instance()->getHistoryDepth());
if(isOpen && filePath.isEmpty())
{
open();
}
else if(isOpen && !filePath.isEmpty())
{
open(filePath);
}
else
{
QPainter *painter = new QPainter(mImage);
painter->fillRect(0, 0,
DataSingleton::Instance()->getBaseSize().width(),
DataSingleton::Instance()->getBaseSize().height(),
Qt::white);
painter->end();
resize(mImage->rect().right() + 6,
mImage->rect().bottom() + 6);
}
QTimer *autoSaveTimer = new QTimer(this);
autoSaveTimer->setInterval(DataSingleton::Instance()->getAutoSaveInterval() * 1000);
connect(autoSaveTimer, SIGNAL(timeout()), this, SLOT(autoSave()));
connect(mAdditionalTools, SIGNAL(sendNewImageSize(QSize)), this, SIGNAL(sendNewImageSize(QSize)));
autoSaveTimer->start();
SelectionInstrument *selectionInstrument = new SelectionInstrument(this);
connect(selectionInstrument, SIGNAL(sendEnableCopyCutActions(bool)), this, SIGNAL(sendEnableCopyCutActions(bool)));
connect(selectionInstrument, SIGNAL(sendEnableSelectionInstrument(bool)), this, SIGNAL(sendEnableSelectionInstrument(bool)));
// Instruments handlers
mInstrumentsHandlers.fill(0, (int)INSTRUMENTS_COUNT);
mInstrumentsHandlers[CURSOR] = selectionInstrument;
mInstrumentsHandlers[PEN] = new PencilInstrument(this);
mInstrumentsHandlers[LINE] = new LineInstrument(this);
mInstrumentsHandlers[ERASER] = new EraserInstrument(this);
mInstrumentsHandlers[RECTANGLE] = new RectangleInstrument(this);
mInstrumentsHandlers[ELLIPSE] = new EllipseInstrument(this);
mInstrumentsHandlers[FILL] = new FillInstrument(this);
mInstrumentsHandlers[SPRAY] = new SprayInstrument(this);
mInstrumentsHandlers[MAGNIFIER] = new MagnifierInstrument(this);
mInstrumentsHandlers[COLORPICKER] = new ColorpickerInstrument(this);
mInstrumentsHandlers[CURVELINE] = new CurveLineInstrument(this);
mInstrumentsHandlers[TEXT] = new TextInstrument(this);
// Effects handlers
mEffectsHandlers.fill(0, (int)EFFECTS_COUNT);
mEffectsHandlers[NEGATIVE] = new NegativeEffect(this);
mEffectsHandlers[GRAY] = new GrayEffect(this);
mEffectsHandlers[BINARIZATION] = new BinarizationEffect(this);
mEffectsHandlers[GAUSSIANBLUR] = new GaussianBlurEffect(this);
mEffectsHandlers[GAMMA] = new GammaEffect(this);
mEffectsHandlers[SHARPEN] = new SharpenEffect(this);
mEffectsHandlers[CUSTOM] = new CustomEffect(this);
}
示例7: draw
//.........这里部分代码省略.........
if(label.length() > 0 && ((pos + refwidth_div_2) - last_label_at) > ((label_offset * 2) + 1)) {
last_label_at = pos + refwidth_div_2;
int lx = (int)(((pos + refwidth_div_2) * cos45deg) - ((gy2 + label_offset) * sin45deg));
int ly = (int)(((pos + refwidth_div_2) * sin45deg) + ((gy2 + label_offset) * cos45deg));
int fmwidth = fm.width(label);
paint.save();
paint.rotate(-45);
paint.drawText(lx - fmwidth, ly - fmheight_div_2, fmwidth, fmheight, Qt::AlignRight | Qt::AlignTop, label);
paint.restore();
}
QMapIterator<int, double> sit(ref.second);
paint.save();
if(drawBars() == true) {
TSetValue tval;
QMap<double, TSetValue> sort_map;
sit = ref.second;
while(sit.hasNext())
{
sit.next();
if(sit.value() != 0.0 && _setStyle[sit.key()].bar == true) {
tval.first = sit.key();
tval.second = sit.value();
sort_map[(tval.second < 0.0 ? minValue() : maxValue()) - (tval.second < 0.0 ? -tval.second : tval.second)] = tval;
}
}
QMapIterator<double, TSetValue> it(sort_map);
while(it.hasNext())
{
it.next();
tval = it.value();
if(tval.second != 0.0) {
if(tval.second < 0) {
bar_height = (int)((tval.second / minValue()) * (gy_org - gy_min));
} else {
bar_height = (int)((tval.second / maxValue()) * (gy_org - gy_max));
}
paint.fillRect(pos + buf, gy_org - bar_height, refwidth - buf2, bar_height, getSetColor(tval.first));
}
}
}
if(drawLines() == true) {
this_map.clear();
sit = ref.second;
while(sit.hasNext())
{
sit.next();
if(_setStyle[sit.key()].line == true) {
this_map[sit.key()] = sit.value();
if(last_map.contains(sit.key())) {
paint.setPen(getSetColor(sit.key()));
double old_val = last_map[sit.key()];
double new_val = sit.value();
int ly1;
if(old_val < 0.0) ly1 = (int)((old_val / minValue()) * (gy_org - gy_min));
else ly1 = (int)((old_val / maxValue()) * (gy_org - gy_max));
ly1 = gy_org - ly1;
int lx1 = pos - refwidth_div_2;
int ly2;
if(new_val < 0.0) ly2 = (int)((new_val / minValue()) * (gy_org - gy_min));
else ly2 = (int)((new_val / maxValue()) * (gy_org - gy_max));
ly2 = gy_org - ly2;
int lx2 = pos + refwidth_div_2;
paint.drawLine(lx1, ly1, lx2, ly2);
}
}
}
last_map = this_map;
}
if(drawPoints() == true) {
sit = ref.second;
while(sit.hasNext())
{
sit.next();
if(_setStyle[sit.key()].point == true) {
paint.setBrush(getSetColor(sit.key()));
paint.setPen(QColor(0,0,0));
int ly1;
if(sit.value() < 0.0) ly1 = (int)((sit.value() / minValue()) * (gy_org - gy_min));
else ly1 = (int)((sit.value() / maxValue()) * (gy_org - gy_max));
ly1 = gy_org - ly1;
int lx1 = pos + refwidth_div_2;
paint.drawEllipse(lx1 - 2, ly1 - 2, 5, 5);
}
}
}
paint.restore();
pos += refwidth;
}
paint.restore();
}
paint.drawLine(gx1, gy_org, gx2 - 1, gy_org);
paint.drawRect(gx1, gy1, gx2 - gx1, gy2 - gy1);
// Now that we are done return the paint device back to the state
// it was when we started to mess with it
paint.restore();
}
示例8: paintEvent
void QHexScrollArea::paintEvent(QPaintEvent *e)
{
Q_UNUSED(e)
QPainter painter;
painter.begin(viewport());
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setRenderHint(QPainter::TextAntialiasing, true);
painter.fillRect(0,0,width(), height(), QBrush(0xD7D7AF));
QFont font = this->font();
QFontMetrics fm = this->fontMetrics();
painter.setFont(font);
int ssw = fm.width(" "); // width of space symbol
int zsw = fm.width("0"); // width of zero symbol
int div = maxDataCount / bytesPerRow; // data size divide to 16. number of maximum rows
int mod = maxDataCount % bytesPerRow; // data size module to 16. number of bytes at last row
maxRowsCount = div;
if (mod > 0) maxRowsCount += 1;
int rowNumberW = 2 * ssw + fm.width(QString::number(maxRowsCount)); // width of row number column
int rowNumberH = viewport()->height(); // height of row number column
// painting lines number column background
painter.fillRect(0, 0, rowNumberW, rowNumberH, QBrush(0xD4D0C8));
painter.fillRect(getRowNumberWidth(), 0, getByteNumberWidth(), height(), QBrush(QColor(0xAFAF87)));
painter.fillRect(getRowNumberWidth(), 0, width(), fm.height()+4, QBrush(QColor(0xAFAF87)));
// number of rows visible on viewport
int viewportRow = (int) ceil( (double)(viewport()->height() - (double)fm.height() ) / (double)fm.height() );
// updating verticalScrollBar settings
verticalScrollBar()->setMinimum(0);
if (maxRowsCount > viewportRow)
{
verticalScrollBar()->setMaximum( (maxRowsCount - viewportRow) + 1);
}
else
{
verticalScrollBar()->setMaximum(0);
}
verticalScrollBar()->setPageStep(10);
verticalScrollBar()->setSingleStep(1);
int vsbValue = verticalScrollBar()->value();
int hsbValue = horizontalScrollBar()->value();
Q_UNUSED(hsbValue)
font.setBold(false);
painter.setFont(font);
// painting header
painter.setPen(0x5F5F00);
int x = rowNumberW+zsw*8 + ssw*2;
int y = fm.height();
painter.drawText(x, y, " 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ");
qint64 minLine = vsbValue; // minimum visible line number
qint64 maxLine = vsbValue + viewportRow; // maximum visible line number
if (maxRowsCount < maxLine)
maxLine = maxRowsCount;
qint64 minData = minLine * bytesPerRow; // minimum visible byte
qint64 maxData = maxLine * bytesPerRow; // maximum visible data
if ( maxData > maxDataCount)
{
maxData = maxDataCount;
}
QByteArray buffer;
emit fillBuffer(buffer, minData, maxData);
for (qint64 i = minLine; i < maxLine; i++)
{
quint32 x = zsw;
quint32 y = (i-vsbValue+1)*fm.height() + fm.height();
QByteArray data = buffer.mid( (int)( i - minLine ) * 16, 16);
QString line = QString::number(i);
// int length = 9-line.length();
int length = QString::number(maxRowsCount).length() - QString::number(i).length();
for (int j=0; j<length; j++)
line.prepend(" ");
if (mShowUpperLine) line = line.toUpper();
/* bytes number and filling 0 to start*/
QString bytes = QString::number(i*bytesPerRow,16);
length = 8-bytes.length();
for (int j=0; j<length; j++)
bytes.prepend("0");
//.........这里部分代码省略.........
示例9: bgPixmap
SplashScreen::SplashScreen(QWidget *parent) :
QWidget(parent)
{
QRect rec = QApplication::desktop()->screenGeometry();
int screenWidth = rec.width();
int screenHeight = rec.height();
this->setWindowFlags(Qt::FramelessWindowHint);
this->setGeometry(0,screenHeight/2-150,screenWidth,300);
QPixmap bgPixmap(screenWidth,300);
QLinearGradient bgGradient(QPointF(0, 0), QPointF(screenWidth, 0));
bgGradient.setColorAt(0, QColor("#272727"));
//bgGradient.setColorAt(1, QColor("#7d0001"));
bgGradient.setColorAt(1, QColor("#272727"));
//#3c3c3b
QRect rect_linear(0,0,screenWidth,300);
QPainter *painter = new QPainter(&bgPixmap);
painter->fillRect(rect_linear, bgGradient);
painter->end();
bg = new QLabel(this);
bg->setPixmap(bgPixmap);
bg->setGeometry(0,0,screenWidth,300);
splashImage = new QLabel(this);
splashImage->setStyleSheet("QLabel { background: transparent; }");
QPixmap newPixmap;
if(GetBoolArg("-testnet")) {
newPixmap.load(":/images/splash_testnet");
}
else {
newPixmap.load(":/images/splash");
}
splashImage->setPixmap(newPixmap);
splashImage->move(screenWidth/2-567/2,50);
QFont smallFont; smallFont.setPixelSize(10);
versionLabel = new QLabel(this);
versionLabel->setStyleSheet("QLabel { background: transparent; color: #000000; }");
versionLabel->setFont(smallFont);
versionLabel->setText(QString::fromStdString(FormatFullVersion()).split("-")[0]);
versionLabel->setFixedSize(1000,30);
versionLabel->move(screenWidth/2-10,220);
QFont largeFont; largeFont.setPixelSize(16);
label = new QLabel(this);
label->setStyleSheet("QLabel { background: transparent; color: #FFFFFF; }");
label->setFont(largeFont);
label->setText("...");
label->setFixedSize(1000,30);
label->move(screenWidth/2-108,260);
}
示例10: paintEvent
void ArthurFrame::paintEvent(QPaintEvent *e)
{
#ifdef Q_WS_QWS
static QPixmap *static_image = 0;
#else
static QImage *static_image = 0;
#endif
QPainter painter;
if (preferImage()
#ifdef QT_OPENGL_SUPPORT
&& !m_use_opengl
#endif
) {
if (!static_image || static_image->size() != size()) {
delete static_image;
#ifdef Q_WS_QWS
static_image = new QPixmap(size());
#else
static_image = new QImage(size(), QImage::Format_RGB32);
#endif
}
painter.begin(static_image);
int o = 10;
QBrush bg = palette().brush(QPalette::Background);
painter.fillRect(0, 0, o, o, bg);
painter.fillRect(width() - o, 0, o, o, bg);
painter.fillRect(0, height() - o, o, o, bg);
painter.fillRect(width() - o, height() - o, o, o, bg);
} else {
#ifdef QT_OPENGL_SUPPORT
if (m_use_opengl) {
painter.begin(glw);
painter.fillRect(QRectF(0, 0, glw->width(), glw->height()), palette().color(backgroundRole()));
} else {
painter.begin(this);
}
#else
painter.begin(this);
#endif
}
painter.setClipRect(e->rect());
painter.setRenderHint(QPainter::Antialiasing);
QPainterPath clipPath;
QRect r = rect();
qreal left = r.x() + 1;
qreal top = r.y() + 1;
qreal right = r.right();
qreal bottom = r.bottom();
qreal radius2 = 8 * 2;
clipPath.moveTo(right - radius2, top);
clipPath.arcTo(right - radius2, top, radius2, radius2, 90, -90);
clipPath.arcTo(right - radius2, bottom - radius2, radius2, radius2, 0, -90);
clipPath.arcTo(left, bottom - radius2, radius2, radius2, 270, -90);
clipPath.arcTo(left, top, radius2, radius2, 180, -90);
clipPath.closeSubpath();
painter.save();
painter.setClipPath(clipPath, Qt::IntersectClip);
painter.drawTiledPixmap(rect(), m_tile);
// client painting
paint(&painter);
painter.restore();
painter.save();
if (m_show_doc)
paintDescription(&painter);
painter.restore();
int level = 180;
painter.setPen(QPen(QColor(level, level, level), 2));
painter.setBrush(Qt::NoBrush);
painter.drawPath(clipPath);
if (preferImage()
#ifdef QT_OPENGL_SUPPORT
&& !m_use_opengl
#endif
) {
painter.end();
painter.begin(this);
#ifdef Q_WS_QWS
painter.drawPixmap(e->rect(), *static_image, e->rect());
#else
painter.drawImage(e->rect(), *static_image, e->rect());
#endif
}
#ifdef QT_OPENGL_SUPPORT
if (m_use_opengl && (inherits("PathDeformRenderer") || inherits("PathStrokeRenderer") || inherits("CompositionRenderer") || m_show_doc))
//.........这里部分代码省略.........
示例11: constructorHelper
void colorDialog::constructorHelper(bool useSquareColors, flossType type) {
setAttribute(Qt::WA_DeleteOnClose);
// left right buttons and label
leftRightColorPatch_ = new QLabel;
QPixmap colorPatch(2*LR_BOX + 2*LR_BORDER, LR_BOX + 2*LR_BORDER);
colorPatch.fill(QColor(180, 180, 180));
QPainter painter;
painter.begin(&colorPatch);
painter.fillRect(LR_BORDER, LR_BORDER, 2*LR_BOX, LR_BOX,
inputColor_.qc());
painter.drawRect(LR_BORDER, LR_BORDER, 2*LR_BOX, LR_BOX);
painter.drawLine(LR_BORDER + LR_BOX, LR_BORDER,
LR_BORDER + LR_BOX, LR_BORDER + LR_BOX);
painter.end();
leftRightColorPatch_->setPixmap(colorPatch);
leftButton_ = new QPushButton(QIcon(":leftArrow.png"), "", this);
leftButton_->setEnabled(false);
connect(leftButton_, SIGNAL(clicked()),
this, SLOT(processLeftClick()));
rightButton_ = new QPushButton(QIcon(":rightArrow.png"), "", this);
rightButton_->setEnabled(false);
connect(rightButton_, SIGNAL(clicked()),
this, SLOT(processRightClick()));
leftRightLayout_ = new QHBoxLayout;
leftRightHolder_ = new QWidget;
leftRightHolder_->setLayout(leftRightLayout_);
dialogLayout_->addWidget(leftRightHolder_);
leftRightLayout_->setAlignment(Qt::AlignHCenter);
leftRightLayout_->addWidget(leftButton_);
leftRightLayout_->addWidget(leftRightColorPatch_);
leftRightLayout_->addWidget(rightButton_);
// choice box
modeChoiceBox_ = new QComboBox;
if (useSquareColors) {
modeChoiceBox_->addItem(tr("Choose a square color"),
QVariant::fromValue(CD_SQUARE));
}
modeChoiceBox_->addItem(tr("Choose a color list color"),
QVariant::fromValue(CD_LIST));
if (type == flossDMC || type == flossVariable) {
modeChoiceBox_->addItem(tr("Choose a DMC floss by color"),
QVariant::fromValue(CD_DMC_COLOR));
modeChoiceBox_->addItem(tr("Choose a DMC floss by color/number"),
QVariant::fromValue(CD_DMC_FLOSS));
}
if (type == flossAnchor || type == flossVariable) {
modeChoiceBox_->addItem(tr("Choose an Anchor floss by color"),
QVariant::fromValue(CD_ANCHOR_COLOR));
modeChoiceBox_->addItem(tr("Choose an Anchor floss by color/number"),
QVariant::fromValue(CD_ANCHOR_FLOSS));
}
modeChoiceBox_->addItem(tr("Choose a color from an image"),
QVariant::fromValue(CD_IMAGE));
if (type == flossVariable) {
modeChoiceBox_->addItem(tr("Choose a new color"),
QVariant::fromValue(CD_NEW));
}
connect(modeChoiceBox_, SIGNAL(activated(int )),
this, SLOT(processModeChange(int )));
buttonsLayout_ = new QHBoxLayout;
buttonsLayout_->setSpacing(9);
dialogLayout_->addLayout(buttonsLayout_);
buttonsLayout_->addWidget(modeChoiceBox_);
buttonsLayout_->addWidget(cancelAcceptWidget());
move(200, 50);
}
示例12: draw
void FragmentCanvas::draw(QPainter & p) {
if (! visible()) return;
p.setRenderHint(QPainter::Antialiasing, true);
QFontMetrics fm(the_canvas()->get_font(UmlNormalFont));
int w = fm.width((name.isEmpty()) ? QString("X") : name);
int h = fm.height() / 2;
QRect r = rect();
QRect rname = r;
rname.setWidth(w + h);
rname.setHeight(fm.height() + h);
int h1 = (fm.height() + h)/2;
int x1 = rname.right() + h1;
int y1 = rname.bottom() - h1;
QColor bckgrnd = p.backgroundColor();
p.setBackgroundMode((used_color == UmlTransparent) ? ::Qt::TransparentMode : ::Qt::OpaqueMode);
QColor co = color(used_color);
FILE * fp = svg();
if (fp != 0)
fputs("<g>\n", fp);
p.setBackgroundColor(co);
p.setFont(the_canvas()->get_font(UmlNormalFont));
if (used_color != UmlTransparent)
p.fillRect(r, co);
else if (!name.isEmpty()) {
Q3PointArray a(6);
QBrush brsh = p.brush();
a.setPoint(0, rname.left(), rname.top());
a.setPoint(1, x1, rname.top());
a.setPoint(2, x1, y1);
a.setPoint(3, rname.right(), rname.bottom());
a.setPoint(4, rname.left(), rname.bottom());
a.setPoint(5, rname.left(), rname.top());
p.setBrush(UmlWhiteColor);
p.drawPolygon(a, TRUE, 0, 5);
p.setBrush(brsh);
if (fp != 0)
draw_poly(fp, a, UmlWhite);
}
if (fp != 0)
fprintf(fp, "\t<rect fill=\"%s\" stroke=\"black\" stroke-width=\"1\" stroke-opacity=\"1\""
" x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" />\n",
svg_color(used_color),
r.x(), r.y(), r.width() - 1, r.height() - 1);
p.drawRect(r);
if (refer != 0) {
QString s = refer->get_name() + form;
QRect r2(r.left(), r.top() + 2*fm.height(),
r.width(), fm.height());
p.drawText(r2, ::Qt::AlignCenter, s);
if (fp != 0)
draw_text(r2, ::Qt::AlignCenter, s,
p.font(), fp);
}
if (!name.isEmpty())
p.drawText(rname, ::Qt::AlignCenter, name);
if (fp != 0)
draw_text(rname, ::Qt::AlignCenter, name,
p.font(), fp);
p.drawLine(rname.left(), rname.bottom(), rname.right(), rname.bottom());
p.drawLine(rname.right(), rname.bottom(), x1, y1);
p.drawLine(x1, y1, x1, rname.top());
if (fp != 0) {
fprintf(fp, "\t<line stroke=\"black\" stroke-opacity=\"1\""
" x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" />\n",
rname.left(), rname.bottom(), rname.right(), rname.bottom());
fprintf(fp, "\t<line stroke=\"black\" stroke-opacity=\"1\""
" x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" />\n",
rname.right(), rname.bottom(), x1, y1);
fprintf(fp, "\t<line stroke=\"black\" stroke-opacity=\"1\""
" x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" />\n",
x1, y1, x1, rname.top());
fputs("</g>\n", fp);
}
p.setBackgroundColor(bckgrnd);
if (selected())
show_mark(p, r);
}
示例13: save_screenshot
void UI_Mainwindow::save_screenshot()
{
int n;
char str[128],
opath[MAX_PATHLEN];
QPainter painter;
#if QT_VERSION >= 0x050000
painter.setRenderHint(QPainter::Qt4CompatiblePainting, true);
#endif
QPainterPath path;
if(device == NULL)
{
return;
}
scrn_timer->stop();
scrn_thread->wait();
tmc_write(":DISP:DATA?");
QApplication::setOverrideCursor(Qt::WaitCursor);
qApp->processEvents();
n = tmc_read();
QApplication::restoreOverrideCursor();
if(n < 0)
{
strcpy(str, "Can not read from device.");
goto OUT_ERROR;
}
if(device->sz != SCRN_SHOT_BMP_SZ)
{
strcpy(str, "Error, bitmap has wrong filesize\n");
goto OUT_ERROR;
}
if(strncmp(device->buf, "BM", 2))
{
strcpy(str, "Error, file is not a bitmap\n");
goto OUT_ERROR;
}
memcpy(devparms.screenshot_buf, device->buf, SCRN_SHOT_BMP_SZ);
screenXpm.loadFromData((uchar *)(devparms.screenshot_buf), SCRN_SHOT_BMP_SZ);
if(devparms.modelserie == 1)
{
painter.begin(&screenXpm);
painter.fillRect(0, 0, 80, 29, Qt::black);
painter.setPen(Qt::white);
painter.drawText(5, 8, 65, 20, Qt::AlignCenter, devparms.modelname);
painter.end();
}
else if(devparms.modelserie == 6)
{
painter.begin(&screenXpm);
painter.fillRect(0, 0, 95, 29, QColor(48, 48, 48));
path.addRoundedRect(5, 5, 85, 20, 3, 3);
painter.fillPath(path, Qt::black);
painter.setPen(Qt::white);
painter.drawText(5, 5, 85, 20, Qt::AlignCenter, devparms.modelname);
painter.end();
}
if(devparms.screenshot_inv)
{
screenXpm.invertPixels(QImage::InvertRgb);
}
opath[0] = 0;
if(recent_savedir[0]!=0)
{
strcpy(opath, recent_savedir);
strcat(opath, "/");
}
strcat(opath, "screenshot.png");
strcpy(opath, QFileDialog::getSaveFileName(this, "Save file", opath, "PNG files (*.png *.PNG)").toLocal8Bit().data());
if(!strcmp(opath, ""))
//.........这里部分代码省略.........
示例14: drawLightStrip
void KisColorSelector::drawLightStrip(QPainter& painter, const QRect& rect)
{
bool isVertical = true;
qreal penSize = qreal(qMin(QWidget::width(), QWidget::height())) / 200.0;
KisColor color(m_selectedColor);
painter.resetTransform();
if (getNumLightPieces() > 1) {
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(QBrush(Qt::red), penSize));
QTransform matrix;
matrix.translate(rect.x(), rect.y());
matrix.scale(rect.width(), rect.height());
for(int i=0; i<getNumLightPieces(); ++i) {
float t1 = float(i) / float(getNumLightPieces());
float t2 = float(i+1) / float(getNumLightPieces());
float light = 1.0f - (float(i) / float(getNumLightPieces()-1));
float diff = t2 - t1;// + 0.001;
QRectF r = isVertical ? QRectF(0.0, t1, 1.0, diff) : QRect(t1, 0.0, diff, 1.0);
color.setX(getLight(light, color.getH(), m_relativeLight));
r = matrix.mapRect(r);
painter.fillRect(r, color.getQColor());
if (i == m_selectedLightPiece)
painter.drawRect(r);
}
}
else {
int size = isVertical ? rect.height() : rect.width();
painter.setRenderHint(QPainter::Antialiasing, false);
if (isVertical) {
for(int i=0; i<size; ++i) {
int y = rect.y() + i;
float light = 1.0f - (float(i) / float(size-1));
color.setX(getLight(light, color.getH(), m_relativeLight));
painter.setPen(color.getQColor());
painter.drawLine(rect.left(), y, rect.right(), y);
}
}
else {
for(int i=0; i<size; ++i) {
int x = rect.x() + i;
float light = 1.0f - (float(i) / float(size-1));
color.setX(getLight(light, color.getH(), m_relativeLight));
painter.setPen(color.getQColor());
painter.drawLine(x, rect.top(), x, rect.bottom());
}
}
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(QBrush(Qt::red), penSize));
float t = 1.0f - m_light;
if (isVertical) {
int y = rect.y() + int(size * t);
painter.drawLine(rect.left(), y, rect.right(), y);
}
else {
int x = rect.x() + int(size * t);
painter.drawLine(x, rect.top(), x, rect.bottom());
}
}
}
示例15: paintSelection
void DisassemblyView::paintSelection(QPainter& p)
{
if (m_SelectionBegin == m_SelectionEnd)
return;
medusa::UserConfiguration UserCfg;
QColor slctColor = QColor(QString::fromStdString(UserCfg.GetOption("color.selection")));
medusa::u32 xSelectBeg, ySelectBeg, xSelectEnd, ySelectEnd;
if (!_ConvertAddressOffsetToViewOffset(m_SelectionBegin, xSelectBeg, ySelectBeg))
{
xSelectBeg = _addrLen;
ySelectBeg = 0;
}
if (static_cast<int>(xSelectBeg) < _addrLen)
xSelectBeg = _addrLen;
if (!_ConvertAddressOffsetToViewOffset(m_SelectionEnd, xSelectEnd, ySelectEnd))
GetDimension(xSelectEnd, ySelectEnd);
if (static_cast<int>(xSelectEnd) < _addrLen)
xSelectEnd = _addrLen;
int begSelect = ySelectBeg;
int endSelect = ySelectEnd;
int begSelectOff = xSelectBeg;
int endSelectOff = xSelectEnd;
int deltaSelect = endSelect - begSelect;
int deltaOffset = endSelectOff - begSelectOff;
if (deltaSelect == 0 && deltaOffset == 0)
return;
// If the user select from the bottom to the top, we have to swap up and down
if (deltaSelect < 0)
{
deltaSelect = -deltaSelect;
std::swap(begSelect, endSelect);
std::swap(begSelectOff, endSelectOff);
}
if (deltaSelect)
deltaSelect++;
if (deltaSelect == 0)
{
if (deltaOffset < 0)
{
deltaOffset = -deltaOffset;
std::swap(begSelectOff, endSelectOff);
}
int x = (begSelectOff - horizontalScrollBar()->value()) * _wChar;
int y = (begSelect - verticalScrollBar()->value()) * _hChar;
int w = deltaOffset * _wChar;
int h = _hChar;
QRect slctRect(x, y, w, h);
p.fillRect(slctRect, slctColor);
}
// Draw selection background
// This part is pretty tricky:
// To draw the selection we use the lazy method by three passes.
/*
+-----------------+
| ############+ Part¹
|#################+ Part²
|#################+ Part²
|#### | Part³
+-----------------+
*/
else if (deltaSelect > 0)
{
// Part¹
int x = (begSelectOff - horizontalScrollBar()->value()) * _wChar;
int y = (begSelect - verticalScrollBar()->value()) * _hChar;
int w = (viewport()->width() - _addrLen) * _wChar;
int h = _hChar;
QRect slctRect(x, y, w, h);
p.fillRect(slctRect, slctColor);
// Part²
if (deltaSelect > 2)
{
x = (_addrLen - horizontalScrollBar()->value()) * _wChar;
y = slctRect.bottom();
w = (viewport()->width() - _addrLen) * _wChar;
h = (deltaSelect - 2) * _hChar;
slctRect.setRect(x, y, w, h);
p.fillRect(slctRect, slctColor);
}
// Part³
x = (_addrLen - horizontalScrollBar()->value()) * _wChar;
y = slctRect.bottom();
w = (endSelectOff - _addrLen) * _wChar;
h = _hChar;
slctRect.setRect(x, y, w, h);
p.fillRect(slctRect, slctColor);
//.........这里部分代码省略.........