Oo, that's excellent. I figure there must be a way to sample the whole
screen, like hitting Print Screen, and using that for eye-dropping.


On 7 April 2014 22:49, Justin Israel <[email protected]> wrote:

> For all areas of the application that are not the 3D viewport, you can
> render the widget to an image in memory and then query the color under the
> cursor:
>
> #-------
> globalPos = QtGui.QCursor.pos()
> widget = QtGui.QApplication.widgetAt(globalPos)
>
> img = QtGui.QImage(widget.size(), QtGui.QImage.Format_ARGB32)
> widget.render(img)
>
> pos = widget.mapFromGlobal(globalPos)
> color = QtGui.QColor.fromRgb(img.pixel(pos))
> #-------
>
> But getting the color sample from the viewport is trickier because it is
> an OpenGL display and you have to use a different method (Maybe there is a
> better way than this):
>
> #-------
> import tempfile
> import maya.OpenMaya as om
> import maya.OpenMayaUI as mui
>
> tmp = tempfile.NamedTemporaryFile()
>
> globalPos = QtGui.QCursor.pos()
> widget = QtGui.QApplication.widgetAt(globalPos)
>
> view = mui.M3dView.active3dView()
> img = om.MImage()
> view.readColorBuffer(img, True)
> img.writeToFile(tmp.name, "png")
>
> qimg = QtGui.QImage(tmp.name)
> pos = widget.mapFromGlobal(globalPos)
> color = QtGui.QColor.fromRgb(qimg.pixel(pos))
> #-------
>
>
> -- justin
>
>
>
>
>
> On Tue, Apr 8, 2014 at 3:35 AM, Marcus Ottosson <[email protected]>wrote:
>
>> Not sure about getting an arbitrary pixel regardless of what lies
>> underneath the cursor, but if your looking to eye-drop an image within a Qt
>> interface (which may be what the Render View is doing, I'm not sure), you
>> can get the cursor position with 
>> QCursor.pos()<http://qt-project.org/doc/qt-5/qcursor.html#pos>and use that 
>> to determine a color within an image using
>> QImage.pixel() <http://qt-project.org/doc/qt-4.8/qimage.html#pixel>
>>
>> # Psuedo-code
>> current_position = QCursor.pos()
>> widget_under_cursor = QApplication.widgetAt(current_position)
>> relative_position = widget_under_cursor.mapFromGlobal(current_position)
>> color = my_image.pixel(relative_position)  # Returns a QRgb object
>>
>>
>> On 7 April 2014 16:20, Arvid Schneider <[email protected]> wrote:
>>
>>> Hey Group,
>>>
>>> I am trying to return rgb/float values at the current pixel under the
>>> mouse pointer. How would you accomplish that?
>>> The idea is, to press a button which enables the getColor method, so
>>> when I hover the mouse over mayas viewport (render view) and click MMB a
>>> rgb/float value is returned.
>>> I couldnt find a way yet using Qt or python.
>>> Maybe someone has an idea.
>>> Arvid
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Python Programming for Autodesk Maya" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/python_inside_maya/f31df7eb-d1af-4c40-8bc7-bc5e062c5553%40googlegroups.com<https://groups.google.com/d/msgid/python_inside_maya/f31df7eb-d1af-4c40-8bc7-bc5e062c5553%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> *Marcus Ottosson*
>> [email protected]
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Python Programming for Autodesk Maya" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>>  To view this discussion on the web visit
>> https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOAgR8Au7%2BhjnfYHHX4nWVfWkraZubrKon57_ywvWmmiiw%40mail.gmail.com<https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOAgR8Au7%2BhjnfYHHX4nWVfWkraZubrKon57_ywvWmmiiw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2G_ua89AeugKvO0mqhczJENYmKa1sVSDd_2CVkQXNGWA%40mail.gmail.com<https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2G_ua89AeugKvO0mqhczJENYmKa1sVSDd_2CVkQXNGWA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>



-- 
*Marcus Ottosson*
[email protected]

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOC__hn6KXOLx8mnYgaj_rGPXZQCpE-S%2Bkn%3DOKmCqLyfYQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to