Вы можете просто использовать PointF
. Все System.Drawing
поддерживают операции с плавающей запятой. Почему бы не использовать их? В противном случае, если вы действительно хотите использовать double
s и передавать их целочисленным функциям рисования, вам нужно будет создать собственную структуру. Что-то на этот счет:
struct MyPoint {
public double X{get;set;}
public double Y{get;set;}
public MyPoint(double x, double y) {
X = x;
Y = y;
}
public implicit operator Point() {
return new Point(X, Y);
}
}
Это очень усеченная реализация, если вы посмотрите на исходные метаданные Point
(перейдя к определению), вы увидите все переопределения и операторы, которые вам нужно реализовать.
Кроме того, вы можете заметить, что Point
может неявно преобразовывать в PointF
, но не наоборот. Это не поддерживается из-за возможной потери точности. На вашем месте я бы переосмыслил дизайн, так как он, кажется, идет вразрез с лучшими практиками использования дизайнеров API.