在JavaFX中绘制子像素?

时间:2016-04-01 17:46:21

标签: java javafx graphics javafx-2 javafx-8

对于我试图创建的JavaFX图形程序,我希望能够将每个像素划分为4个子像素并绘制它们。这在JavaFX(或任何其他Java图形库)中是否可行?

2 个答案:

答案 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的一部分。