Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

High DPI rendering on JVM #6

Open
jaakkonakaza opened this issue Mar 16, 2024 · 0 comments
Open

High DPI rendering on JVM #6

jaakkonakaza opened this issue Mar 16, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@jaakkonakaza
Copy link
Member

Graphics have to be scaled by the device's pixel ratio¹ while rendering for native resolution. The image then has to be scaled back down when showing in the Swing window to be sized properly².

Code for getting the DPR¹:

import java.awt.GraphicsEnvironment

GraphicsEnvironment
  .getLocalGraphicsEnvironment
  .getDefaultScreenDevice
  .getDefaultConfiguration
  .getDefaultTransform
  .getScaleX

Code for Swing rendering² (example from O1Library/gui/viewimpl/ViewComponent):

  final override def paintComponent(myGraphics: Graphics2D): Unit =
    for image <- latestComputed.pic.flatMap( _.toImage ) do

      val xform = AffineTransform.getScaleInstance(.5, .5)
      myGraphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR)
      myGraphics.drawImage(image, xform, null)
@jaakkonakaza jaakkonakaza added the bug Something isn't working label Mar 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant