对于我试图创建的JavaFX图形程序,我希望能够将每个像素划分为4个子像素并绘制它们。这在JavaFX(或任何其他Java图形库)中是否可行?
答案 0 :(得分:0)
当使用FontSmoothingType.LCD
时,JavaFX将渲染文本的子像素。
据我所知,JavaFX中没有一种机制可以指定使用sub pixel rendering来表示除文本之外的任何其他图形基元(例如直线和圆)。
即使你不能为其他图元指定渲染类型,它们可能会也可能不会使用子像素渲染渲染(我不知道,虽然我猜想子像素渲染不会甚至在使用anti-aliasing)渲染基元时使用。
答案 1 :(得分:0)
是的,你可以。默认情况下,如果您在画布上绘制一个整数像素,它将在"之间绘制一个点"实际屏幕像素,即它将与相邻像素抗锯齿。如果偏移0.5,那么它将精确地绘制在像素上。因此,您可以使用0.5到1.5之间的值绘制子像素。例如,如果绘制Y1 = 100.5且Y2 = 101.5的水平线,您将看到两者之间的抗锯齿。您还可以将线宽设置为非整数,在这种情况下,它将对像素进行调暗或反混叠适当的量。我不确定FontSmoothing,但这是画布GraphicsContext的一部分。