Mineodo68 Ответов: 1

Как нарисовать пунктирную линию с изображениями на языке Си#


Привет,
Я пытаюсь нарисовать пользовательскую пунктирную линию, но я хочу поместить изображение внутри этой пунктирной линии. Ориентация моей линии изменчива.

Самолет в середине линии-это изображение. Я не хочу рисовать линию, рисовать изображение и рисовать другую линию, потому что у меня есть динамический угол, рассчитанный с помощью арктана. Длина X фиксирована и известна, Красная линия Y может измениться.

Что я уже пробовал:

Я попытался нарисовать линию, нарисовать изображение и нарисовать другую линию, но это не идеально, из-за переменного угла.

Это часть моего кода :

Image aircraftLogo = Image.FromFile(PATH);//aircraft Logo

decimal arctanValue = Decimal.Divide(X, Y);
                double aircraftLogoRotation = -Math.Atan(Convert.ToDouble(arctanValue)) * (180 / Math.PI);

                float moveX = aircraftLogo.Width / 2f  + X;
                float moveY = aircraftLogo.Height / 2f + Y;
                g.TranslateTransform(moveX, moveY);
                g.RotateTransform(Convert.ToSingle(aicraftLogoRotation));
                g.TranslateTransform(-moveX, -moveY);
                g.DrawImage(aicraftLogo, X, Y, width, Height);
                g.ResetTransform();


Я новичок в C#.
Спасибо за вашу помощь.
Минеодо

1 Ответов

Рейтинг:
9

OriginalGriff

Вы знаете вращение самолета, вы знаете место, куда вы собираетесь его посадить - вы все это продумали. И ты знаешь, какой он большой.

Итак, нарисуйте всю линию как один элемент, затем нарисуйте цвет фона над "средним битом", где вы собираетесь поместить плоскость, чтобы стереть кусок линии, а затем нарисуйте плоскость.
Результат: пунктирная линия с плоскостью в ней...

Другое решение состоит в том, чтобы нарисовать ваши линии горизонтально на растровом изображении, нарисовать плоскость горизонтально между ними, а затем повернуть это изображение, чтобы нарисовать его в вашем графическом контексте.


Maciej Los

5ed!

Mineodo68

Это работает, большое спасибо !

OriginalGriff

Всегда пожалуйста!