<Swing Dev> [9] Review request for 8165594 Bad rendering of Swing UI controls with Windows Classic L&F on HiDPI display
Semyon Sadetsky
semyon.sadetsky at oracle.com
Tue Sep 20 14:34:01 UTC 2016
I would rewrite the method that draws triangle to simplify it:
private void paintScaledTriangle(Graphics g, double x, double y,
double size,
int direction, boolean isEnabled) {
size = Math.max(size , 2);
Path2D.Double path = new Path2D.Double();
path.moveTo(-size, size/2);
path.lineTo(size, size/2);
path.lineTo(0, -size/2);
path.closePath();
AffineTransform affineTransform = new AffineTransform();
affineTransform.rotate(Math.PI * (direction - 1) / 4 );
path.transform(affineTransform);
Graphics2D g2d = (Graphics2D) g;
g2d.translate(x + size / 2. - 1, y + size / 2);
Color oldColor = g.getColor();
if (!isEnabled) {
g2d.translate(1, 0);
g2d.setColor(highlight);
g2d.fill(path);
g2d.translate(-1, 0);
}
g2d.setColor(isEnabled ? darkShadow : shadow);
g2d.fill(path);
g2d.translate( - x - size / 2. + 1, - y - size / 2);
g2d.setColor(oldColor);
}
I'm suggesting to make the paintTriangle() method accept floating point
coordinates to get more precise location and size for the scaled version.
Optionally, 2D AA hints can be added to get better appearance for scales
1.25, 1.5, 1.75.
--Semyon
On 9/20/2016 2:58 PM, Alexandr Scherbatiy wrote:
>
> Hello,
>
> Could you review the updated fix:
> http://cr.openjdk.java.net/~alexsch/8165594/webrev.02
>
> The code formatting issues are updated.
>
> On 9/14/2016 8:02 PM, Semyon Sadetsky wrote:
>> Hi Alexander,
>>
>> When I press the arrow button (for example in the "111" combo)
>> several times I can see artifacts. They are well seen in scale x4.
> I have filled an issue on it: JDK-8166368 JComboBox drawing has
> artifacts with Windows Classic L&F on HiDPI display
> https://bugs.openjdk.java.net/browse/JDK-8166368
>
> Thanks,
> Alexandr.
>
>>
>> --Semyon
>>
>>
>> On 9/14/2016 5:39 PM, Alexandr Scherbatiy wrote:
>>>
>>> Hello,
>>>
>>> Could you review the updated fix:
>>> http://cr.openjdk.java.net/~alexsch/8165594/webrev.01
>>>
>>> - HiDPI icons are only drawn for scaled graphics.
>>>
>>> The screenshots [1], [2], and [3] show difference between icons
>>> drawing before and after the fix for scales 1x, 2x, and 4x.
>>>
>>> [1]
>>> http://cr.openjdk.java.net/~alexsch/8165594/screenshots/icons-windows-classic-1x_01.png
>>> [2]
>>> http://cr.openjdk.java.net/~alexsch/8165594/screenshots/icons-windows-classic-2x_01.png
>>> [3]
>>> http://cr.openjdk.java.net/~alexsch/8165594/screenshots/icons-windows-classic-4x_01.png
>>>
>>> Thanks,
>>> Alexandr.
>>>
>>> On 9/8/2016 10:59 AM, Andrej Golovnin wrote:
>>>> Hi Alexandr,
>>>>
>>>>> [1]
>>>>> http://cr.openjdk.java.net/~alexsch/8165594/screenshots/icons-windows-classic-1x.png
>>>>>
>>>> The icons do not look right to me. Take look at the top-left part of
>>>> the radio button. There is a white pixel between the shadow lines. And
>>>> in the selected state there should be a black circle. But instead it
>>>> is a square. The check sign of the checkbox is too thin. And the
>>>> arrows of the combobox and the vertical scroll bar should have a
>>>> single pixel at the top/bottom side. But now they have two pixels.
>>>>
>>>> It would be also nice to see a screen shot of the native Windows
>>>> components for comparison.
>>>>
>>>> Personally when I would make changes like that, then my code would
>>>> look like this:
>>>>
>>>> if (isNotHiDPI() || itMakesMoreSenseToUseTheOldCode()) {
>>>> // use the old good code.
>>>> } else {
>>>> // use the new code
>>>> }
>>>>
>>>> Best regards,
>>>> Andrej Golovnin
>>>>
>>>>> [2]
>>>>> http://cr.openjdk.java.net/~alexsch/8165594/screenshots/icons-windows-classic-2x.png
>>>>>
>>>>> [3]
>>>>> http://cr.openjdk.java.net/~alexsch/8165594/screenshots/icons-windows-classic-4x.png
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Alexandr.
>>>>>
>>>>>
>>>
>>
>
More information about the swing-dev
mailing list