Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Direct drawing on UI
Forum Updated to NodeBB v4.3 + New Features

Direct drawing on UI

Scheduled Pinned Locked Moved Solved General and Desktop
17 Posts 3 Posters 5.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • MiklM Offline
    MiklM Offline
    Mikl
    wrote on last edited by
    #7

    Hi

    -I like the way to draw on opengl. Should be 'fast'. But will i meet capability problem? it will run on Win AND Linux?
    Can you point me to the example, please?

    -Pass image using global variable?
    never was thinking about it. just looking for solution

    -Can i pass my image (RGB data in a memory) to paintEvent(QPaintEvent *)?
    -Can it be inside of QPaintEvent?
    -How to pass it? Something like this: videoFrame->update(RGBPointer)?
    From camera i have raw 24bit RGB data.
    If it is not possible to pass my data to paintEvent(QPaintEvent *) how can i get it? Even if it is inside of QPaintEvent. Not really see how to do it. I will start something. Correct/add me please.

    main()
    {
    char* RGBData = new char[frame size];//data from camera
    
    videoFrame = new VideoFrameWidget();
    videoFrame->update(RGBData);
    }
    
    class VideoFrameWidget : public QWidget
    {
    	Q_OBJECT
    public:
    	VideoFrameWidget(QWidget *parent);
    	virtual void paintEvent(QPaintEvent *);
    };
    
    void VideoFrameWidget::paintEvent(QPaintEvent *data)
    {
    //use opengl to draw image from data
    }
    
    1 Reply Last reply
    0
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #8

      hi
      why cant RGBData just live in VideoFrameWidget ?
      so you dont need to give it from main. ?

      but else u just use functions to give it to the widget.

      MiklM 1 Reply Last reply
      0
      • mrjjM mrjj

        hi
        why cant RGBData just live in VideoFrameWidget ?
        so you dont need to give it from main. ?

        but else u just use functions to give it to the widget.

        MiklM Offline
        MiklM Offline
        Mikl
        wrote on last edited by
        #9

        @mrjj

        It can, but i found it not logic. it is coming from the camera.
        It was simplification of main. In a reality it will be a loop.

        If i understood you correctly, you propose to do it like this:

        main()
        {
         char* RGBData;//data from camera
         VideoFrameWidget videoFrame = new VideoFrameWidget();
         CameraDevice videoSource = new CameraDevice ();
        
         for(;;)
         {
          RGBData = videoSource->getFrame();
          videoFrame->setFrame(RGBData);
          videoFrame->update();
         }
        }
        
        class VideoFrameWidget : public QWidget
        {
            Q_OBJECT
        public:
            VideoFrameWidget(QWidget *parent);
            virtual void paintEvent(QPaintEvent *);
            void setFrame(char* newFrameData);
        private:
         char* frameData;
        };
        
        void VideoFrameWidget::paintEvent(QPaintEvent*)
        {
        //use opengl to draw image from frameData 
        }
        
         void VideoFrameWidget::setFrame(char* newFrameData)
        {
         frameData = newFrameData;
        }
        
        1 Reply Last reply
        0
        • mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #10

          yes exactly and then u can use
          char* frameData;
          in paintEvent

          MiklM 1 Reply Last reply
          0
          • mrjjM mrjj

            yes exactly and then u can use
            char* frameData;
            in paintEvent

            MiklM Offline
            MiklM Offline
            Mikl
            wrote on last edited by
            #11

            @mrjj

            But i still have a question of realization of paintEvent :)

            Can you give me a hand, please

            mrjjM 1 Reply Last reply
            0
            • MiklM Mikl

              @mrjj

              But i still have a question of realization of paintEvent :)

              Can you give me a hand, please

              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #12

              @Mikl
              hii . super :)
              im not good with opengl so better ask @Wieland
              or anyone using it often. :)

              1 Reply Last reply
              0
              • MiklM Offline
                MiklM Offline
                Mikl
                wrote on last edited by
                #13

                @mrjj
                Thank you for helping

                @Wieland
                Can i ask for help with my problem please?
                I need to display raw RGB on a screen in a fastest way.

                mrjjM 1 Reply Last reply
                0
                • MiklM Mikl

                  @mrjj
                  Thank you for helping

                  @Wieland
                  Can i ask for help with my problem please?
                  I need to display raw RGB on a screen in a fastest way.

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #14

                  @Mikl
                  note, this is user run forum.
                  so he might first be on in the evening.
                  :)

                  MiklM 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @Mikl
                    note, this is user run forum.
                    so he might first be on in the evening.
                    :)

                    MiklM Offline
                    MiklM Offline
                    Mikl
                    wrote on last edited by Mikl
                    #15

                    @mrjj
                    Ok. Thanks.

                    For me it is looks strange, but reading this example
                    http://doc.qt.io/qt-5/qtopengl-2dpainting-example.html
                    i found, what the only different is using GLWidget as base class.
                    All painting is done by the same QPainter.

                    Am i right?

                    If it is so, task can be really simple.
                    Maybe you know the fastest way to paint from RGB raw data on widget: draw line by line, pixel by pixel, memcopy,....

                    mrjjM ? 2 Replies Last reply
                    0
                    • MiklM Mikl

                      @mrjj
                      Ok. Thanks.

                      For me it is looks strange, but reading this example
                      http://doc.qt.io/qt-5/qtopengl-2dpainting-example.html
                      i found, what the only different is using GLWidget as base class.
                      All painting is done by the same QPainter.

                      Am i right?

                      If it is so, task can be really simple.
                      Maybe you know the fastest way to paint from RGB raw data on widget: draw line by line, pixel by pixel, memcopy,....

                      mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #16

                      @Mikl
                      Yes as far as i know its VERY similar to
                      normal widget drawing even when opengl.
                      (when 2d)

                      well, the sample i have seen , used something like
                      uchar* data = getDataFromSomewhere();
                      QImage img(data, width, height, QImage::Format_ARGB32);
                      and then convert ot pixmap and draw.
                      or directly into pixmap with
                      http://doc.qt.io/qt-4.8/qpixmap.html#loadFromData

                      1 Reply Last reply
                      0
                      • MiklM Mikl

                        @mrjj
                        Ok. Thanks.

                        For me it is looks strange, but reading this example
                        http://doc.qt.io/qt-5/qtopengl-2dpainting-example.html
                        i found, what the only different is using GLWidget as base class.
                        All painting is done by the same QPainter.

                        Am i right?

                        If it is so, task can be really simple.
                        Maybe you know the fastest way to paint from RGB raw data on widget: draw line by line, pixel by pixel, memcopy,....

                        ? Offline
                        ? Offline
                        A Former User
                        wrote on last edited by
                        #17

                        @Mikl said:

                        For me it is looks strange, but reading this example
                        http://doc.qt.io/qt-5/qtopengl-2dpainting-example.html
                        i found, what the only different is using GLWidget as base class.
                        All painting is done by the same QPainter.

                        Am i right?

                        Hi! Yes, getting 2D hardware acceleration for QPainter is really easy :)

                        1 Reply Last reply
                        2

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved