资源简介
本程序是我学校里数据结构课程设计的一道题目,水平有限还请见谅!
代码片段和文件信息
#include “cellsshader.h“
#include “ui_mainwindow.h“
#include “colorselector.h“
#include
#include
#include
#include
const QPoint CellsShader::offset[4] = {
QPoint(0-1)
QPoint(01)
QPoint(-10)
QPoint(10)
};
CellsShader::CellsShader(Ui::MainWindow* _ui) :
ui(_ui)width(0)height(0) {}
QRgb CellsShader::pixel(QPoint p) const
{
const QRgb* line = (const QRgb*)image.scanLine(p.y());
return line[p.x()];
}
void CellsShader::setPixel(QPoint pQRgb r)
{
QRgb* line = (QRgb*)image.scanLine(p.y());
line[p.x()] = r;
}
bool CellsShader::isInRange(QPoint p) const
{
int x = p.x()y = p.y();
return x >= 0 && x < width && y >= 0 && y < height;
}
void CellsShader::pause() const
{
QEventLoop loop;
QTimer::singleShot(1000&loopSLOT(quit()));
loop.exec();
}
void CellsShader::drawCellAttribute(int cellCountint pixNumQRgb color)
{
ui->idLabel->setText(QString::number(cellCount10));
ui->pixNumLabel->setText(QString::number(pixNum10));
ui->cellsframe2->drawColor(color);
}
void CellsShader::drawCellImage()
{
ui->cellsframe1->drawImage(image);
}
void CellsShader::fillHole()
{
for(int i = 0;i < width;i++)
{
QPoint pUp(i0);
if(pixel(pUp) == BLACK)
floodFill(pUpBLACKMIDDLE);
QPoint pDown(iheight - 1);
if(pixel(pDown) == BLACK)
floodFill(pDownBLACKMIDDLE);
}
for(int j = 0;j < height;j++)
{
QPoint pLeft(0j);
if(pixel(pLeft) == BLACK)
floodFill(pLeftBLACKMIDDLE);
QPoint pRight(width - 1j);
if(pixel(pRight) == BLACK)
floodFill(pRightBLACKMIDDLE);
}
for(int i = 0;i < width;i++)
{
for(int j = 0;j < height;j++)
{
QPoint p(ij);
QRgb r = pixel(p);
if(r == MIDDLE)
setPixel(pBLACK);
else if(r == BLACK)
setPixel(pWHITE);
}
}
}
int CellsShader::floodFill(QPoint seedQRgb seedColorQRgb fillColor)
{
setPixel(seedfillColor);
QVector v = {seed};
int count = 0;
//漫水填充,以 QPoint(ij) 为种子点,广度优先来搜寻4邻域内的像素
while(count != v.size())
{
QPoint p1 = v[count];
for(int i = 0;i<4;i++)
{
QPoint p2 = p1 + offset[i];
if(isInRange(p2) && pixel(p2) == seedColor)
{
setPixel(p2fillColor);
v.push_back(p2);
}
}
count++;
}
return count;
}
void CellsShader::load(const QString& fileName)
{
image.load(fileName); //载入图片
if(image.isNull())
throw QString(“无法载入图片!“);
image = image.convertToFormat(QImage::Format_RGB32); //转为32位图片
width = image.width();
height = image.height();
drawCellImage();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-27 11:09 课程设计\
目录 0 2017-12-22 09:50 课程设计\可执行程序\
目录 0 2017-12-22 09:55 课程设计\可执行程序\cellsImage\
文件 7258 2017-12-26 20:21 课程设计\可执行程序\cellsImage\image1.png
文件 34622 2017-12-21 21:46 课程设计\可执行程序\cellsImage\image2.bmp
文件 62976 2017-12-21 22:25 课程设计\可执行程序\ColourCells.exe
文件 3466856 2014-03-11 18:54 课程设计\可执行程序\D3Dcompiler_47.dll
目录 0 2017-12-22 09:50 课程设计\可执行程序\iconengines\
文件 43008 2017-10-02 20:09 课程设计\可执行程序\iconengines\qsvgicon.dll
目录 0 2017-12-22 09:50 课程设计\可执行程序\imageformats\
文件 33792 2017-10-02 19:26 课程设计\可执行程序\imageformats\qgif.dll
文件 46592 2017-10-02 20:05 课程设计\可执行程序\imageformats\qicns.dll
文件 36352 2017-10-02 19:26 课程设计\可执行程序\imageformats\qico.dll
文件 247808 2017-10-02 19:26 课程设计\可执行程序\imageformats\qjpeg.dll
文件 27648 2017-10-02 20:09 课程设计\可执行程序\imageformats\qsvg.dll
文件 26624 2017-10-02 20:04 课程设计\可执行程序\imageformats\qtga.dll
文件 448000 2017-10-02 20:04 课程设计\可执行程序\imageformats\qtiff.dll
文件 25600 2017-10-02 20:05 课程设计\可执行程序\imageformats\qwbmp.dll
文件 449536 2017-10-02 20:05 课程设计\可执行程序\imageformats\qwebp.dll
文件 22016 2017-10-02 19:12 课程设计\可执行程序\libEGL.dll
文件 120334 2015-12-29 06:25 课程设计\可执行程序\libgcc_s_dw2-1.dll
文件 2807296 2017-10-02 19:11 课程设计\可执行程序\libGLESV2.dll
文件 1540622 2015-12-29 06:25 课程设计\可执行程序\libstdc++-6.dll
文件 79360 2015-12-29 06:25 课程设计\可执行程序\libwinpthread-1.dll
文件 15995904 2016-06-14 21:08 课程设计\可执行程序\opengl32sw.dll
目录 0 2017-12-22 09:50 课程设计\可执行程序\platforms\
文件 1762304 2017-10-02 19:27 课程设计\可执行程序\platforms\qwindows.dll
文件 6097408 2017-12-22 09:50 课程设计\可执行程序\Qt5Core.dll
文件 6205440 2017-10-02 19:17 课程设计\可执行程序\Qt5Gui.dll
文件 359936 2017-10-02 20:09 课程设计\可执行程序\Qt5Svg.dll
文件 6355456 2017-10-02 19:22 课程设计\可执行程序\Qt5Widgets.dll
............此处省略89个文件信息
相关资源
- 基于QT开发CAN总线上位机
- VS2017+QT5.9.1使用大漠插件(COM组件)
- 当当网数据1.1G)快速检索
- QT实现群聊私聊
- vs2010编译osg3.2.1,带有osgQtd.lib和osgQ
- digital image processing 4th edition gonzalez
- Armadillo + BLAS & LAPACKQt Creator 编译安装
- qt-eclipse-integration-linux.x86-1.4.0.tar.gz
- 数字图像处理 第三版 冈萨雷斯 英文
- QT 4.1.0函数手册.chm
- 基于QT技术实现无线点菜系统源代码
- UFTQTP12.01教程
- QT矩形检测
- Qt_opencv.rar
- Qt报表软件介绍cutereport
- 《Delphi 数字图像处理及高级应用》(
- OpenCV2之Qt库
- 支持Qt编译的mupdf动态库
- QT小车上位机程序
- STM32F4x7+freertos+lwip+ssl+MQTT完整代码
- QT5.4版本Windows安装包
- vs2017编译发布期货策略程序化自动交
- DS9天文软件
- vs2015+qt5.8.0 NTP协议的实现源码
- Camera Image Quality Benchmarking
- linux下qt打包工具linuxdeployqt
- Qt调用WebService
-
基于Qt封装minibl
ink库-支持mingw和vc - 基于QT5实现一个简单好用的串口助手
- Qt Designer 2019-09-27.dmg
评论
共有 条评论