crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Ошибка QImage(QImage::setPixel: Index out of range), QGraphicsScene, QGraphicsObject, QImage
demaker
  опции профиля:
сообщение 2.5.2017, 17:52
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 29.1.2013
Пользователь №: 3691

Спасибо сказали: 0 раз(а)




Репутация:   0  



Пытаюсь по нажатию кнопки мыши подкрасить точку, но выдается в консоль ошибка(предупреждение)
Image::setPixel: Index число out of range


Вроде все правильно делаю :huh:
Помогите разобраться
Вот код
GraphicsSceneObstanovka::GraphicsSceneObstanovka(QObject *parent):
    QGraphicsScene(parent)
{
    //addPixmap(QPixmap(":resource/images/submarine_1500_390.bmp"));
    gs = new GeneralSituation();
    addItem(gs);
    setSceneRect(itemsBoundingRect());
}

GraphicsSceneObstanovka::~GraphicsSceneObstanovka()
{
}

//-----------------------------------------------------------------------------------------
GeneralSituation::GeneralSituation(QGraphicsItem *parent):
    QGraphicsObject(parent)
{
    image = new QImage(":resource/images/submarine_1500_390.bmp");
}

GeneralSituation::~GeneralSituation()
{

}

QRectF GeneralSituation::boundingRect() const
{
    return QRectF(0,0,submarina_width,submarina_height);
}

void GeneralSituation::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    painter->save();
    painter->drawImage(0,0,*image);
    painter->restore();
}

void GeneralSituation::mousePressEvent(QGraphicsSceneMouseEvent* event)
{

    qDebug()<<"mousePressEvent";

    QPointF scenePoint = event->scenePos();                                            
    qDebug()<<"scenePoint = "<<scenePoint;
    PointColor startPoint;
    startPoint.X = (unsigned int)(scenePoint.x());
    startPoint.Y = (unsigned int)(scenePoint.y());

    delete image;                                                                      
    image = new QImage(":resource/images/submarine_1500_390.bmp");
    image->setPixel(startPoint.X,startPoint.Y,0x00FFFF00U); //color  0x00FFFF00U

    update();                                                                        
}

Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.5.2017, 7:36
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


используй
void QImage::setPixelColor(const QPoint &position, const QColor &color)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
demaker
  опции профиля:
сообщение 3.5.2017, 9:49
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 29.1.2013
Пользователь №: 3691

Спасибо сказали: 0 раз(а)




Репутация:   0  


Разобрался.
Оказывается файл-рисунок был монохромный, а и не знал.
Из-за этого и ничего и не получалось.

Сообщение отредактировал demaker - 3.5.2017, 11:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 17:22