Himesh Sameera
Himesh Sameera

Reputation: 159

wxWidgets wxPen size changes unexpectedly

I've used the following code to draw on a Image using a wxMemoryDC. To do so I used a wxPen and changed the settings of the pen as in the following code. The code compiles and runs perfectly in windows environment. But in Ubuntu it draws the lines but the pen size stays correctly for a very little time and then the pen size becomes very low.(As shown in the image) It is not an error of the m_pensize variable because it always prints the correct value. Why does this works so strange in ubuntu when it works correctly in windows?.

(m_graphics is the memoryDC here)

            if (x<m_backgroundImage.GetWidth() && y< m_backgroundImage.GetHeight()){
                m_graphics.SelectObject(m_maskImage);
                wxPen* pen;
                if (m_isDrawing){
                    pen = wxThePenList->FindOrCreatePen(*wxRED, m_penSize);
                    printf("Pen size is %d", m_penSize);
                }
                else{
                    pen = wxThePenList->FindOrCreatePen(*wxBLACK, m_penSize);
                }
                if (m_pentype != Circle){
                    pen->SetCap(wxCAP_PROJECTING);
                }
                m_graphics.SetPen(*pen);
                m_graphics.DrawLine(m_lastX,m_lastY,x,y);
                m_graphics.SelectObject(wxNullBitmap);
            }

In windows it is shown Correctly enter image description here

In linux The pen size is changed unexpectadly. enter image description here

Your help is greatly appreciated.

Upvotes: 0

Views: 117

Answers (1)

VZ.
VZ.

Reputation: 22688

If the same code behaves differently in wxMSW and wxGTK, then it's probably a bug in wxWidgets itself, however to fix it it needs to be reproduced in some simple to test way, ideally by making the smallest possible change to the wxWidgets drawing sample and opening a ticket attaching this change as a patch to it.

To simplify the code as much as possible, I'd recommend:

  1. Getting rid of wxThePenList and just creating the pen directly. It's unlikely that the bug is here, but who knows.
  2. Check if it's not due to SetCap() call, this is the most likely candidate IMHO.

Upvotes: 1

Related Questions