Используйте gcloud compute instances set-machine-type
, чтобы изменить остановленный экземпляр на машину другого типа, например:
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
foobaz us-central1-a f1-micro 10.128.0.2 104.197.19.103 RUNNING
$ gcloud compute instances stop foobaz
$ gcloud compute instances set-machine-type foobaz --machine-type g1-small
$ gcloud compute instances start foobaz
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
foobaz us-central1-a g1-small 10.128.0.2 104.197.179.223 RUNNING
Предполагается, что вы уже установили ваша зона по умолчанию, например:
$ gcloud config set compute/zone us-central1-a
Также обратите внимание, что EXTERNAL_IP
изменилось в примере выше. Если вы хотите, чтобы вновь измененный размер машины сохранял исходный IP-адрес, то , прежде чем остановить его , следует преобразовать внешний IP-адрес из эфемерного в статический :
$ ipaddr=$(gcloud --format="value(networkInterfaces[0].accessConfigs[0].natIP)" compute instances describe foobaz)
$ gcloud compute addresses create foobaz-ip --addresses $ipaddr
Одним из решений может быть использование свойства TranslateTransform. Затем вместо использования структур Point / PointF вы можете создать собственные структуры FlippedPoint / FlippedPointF, которые имеют неявное приведение к Point / PointF (но при их приведении координаты меняются местами):
public struct FlippedPoint
{
public int X { get; set; }
public int Y { get; set; }
public FlippedPoint(int x, int y) : this()
{ X = x; Y = y; }
public static implicit operator Point(FlippedPoint point)
{ return new Point(-point.X, -point.Y); }
public static implicit operator FlippedPoint(Point point)
{ return new FlippedPoint(-point.X, -point.Y); }
}
Попробуйте создать графический объект с отрицательной высотой. Я не знаю конкретно библиотеку C #, но этот трюк работает в последних версиях GDI.