Я думаю, близорукость.
Первоначально разработанные интерфейсы предназначались только для использования с экземплярами класса
IMyInterface val = GetObjectImplementingIMyInterface();
val.SomeThingDefinedinInterface();
Это было только с введением интерфейсов, поскольку ограничения для обобщений действительно добавили статический метод к интерфейсу. использовать.
(отвечает на комментарий :) Я полагаю, что для его изменения сейчас потребуется изменить CLR, что приведет к несовместимости с существующими сборками.
Оказывается, Java2D (я полагаю, это то, что вы используете) уже неплохо справляется с этим! Здесь есть достойное руководство: http://www.javaworld.com/javaworld/jw-08-1998/jw-08-media.html
Важная строка:
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
вы можете установить подсказки рендеринга:
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Две вещи, которые могут помочь:
Graphics2D.draw (Shape)
с экземпляром java.awt.geom.Ellipse2D
вместо Graphics.drawOval
Graphics2D.setRenderingHint
, чтобы включить сглаживание Пример
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Shape theCircle = new Ellipse2D.Double(centerX - radius, centerY - radius, 2.0 * radius, 2.0 * radius);
g2d.draw(theCircle);
}
См. ответ Йозефа для примера setRenderingHint
Конечно, вы устанавливаете свой радиус, какой вам нужен:
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
Ellipse2D.Double hole = new Ellipse2D.Double();
hole.width = 28;
hole.height = 28;
hole.x = 14;
hole.y = 14;
g2d.draw(hole);
}