Саша Опубликовано 24 августа, 2023 Поделиться Опубликовано 24 августа, 2023 Здравствуйте! Вот фрагмент программы. var aBitmap: TBitmap; type TArrow = record x, y: integer; end; var arrow: array [1..3] of TArrow; ........ ........ ........ procedure TForm1.Button4Click(Sender: TObject); begin aBitmap := TBitmap.Create; aBitmap.SetSize(trunc(Image1.Width), trunc(Image1.Height)); aBitmap.Canvas.BeginScene; // Задаю цвет aBitmap.Canvas.Stroke.Color := TAlphaColorRec.Forestgreen; // Рисую зеленую стрелку aBitmap.Canvas.DrawLine(PointF(X0, Y0), PointF(arrow[1].x, arrow[1].y), 1); aBitmap.Canvas.DrawLine(PointF(arrow[1].x, arrow[1].y), PointF(arrow[2].x, arrow[2].y), 1); aBitmap.Canvas.DrawLine(PointF(arrow[1].x, arrow[1].y), PointF(arrow[3].x, arrow[3].y), 1); aBitmap.Canvas.EndScene; Image1.Bitmap.Assign(aBitmap); aBitmap.Free; end; При первом нажатии кнопки полуаю ожидаемый результат. Затем мне надо перерисовать эту стрелку в другом направлении. Для этого пересчитываю x, y в arrow, нажимаю кнопку, вижу ужас. Ноая стрелка нарисовалась правильно, но остались следы от старой стрелки в виде разбросанных пикселей от старой срелки. Помогите, пожалуста, решить проблему. Спасибо! Цитата Ссылка на комментарий
0 krapotkin Опубликовано 24 августа, 2023 Поделиться Опубликовано 24 августа, 2023 по умолчанию нарисован прозрачный фон поэтому копирование на другой битмап вполне может добавить только непрозрачные области, остальное оставить как было начните рисование с https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Graphics.TCanvas.Clear Цитата Ссылка на комментарий
0 Саша Опубликовано 24 августа, 2023 Автор Поделиться Опубликовано 24 августа, 2023 4 часа назад, krapotkin сказал: начните рисование с https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Graphics.TCanvas.Clear Спасибо! Проблема решена! После aBitmap := TBitmap.Create; добавил Image1.Bitmap.Clear(TAlphaColors.White); Цитата Ссылка на комментарий
Вопрос
Саша
Здравствуйте!
Вот фрагмент программы.
var aBitmap: TBitmap;
type
TArrow = record
x, y: integer;
end;
var arrow: array [1..3] of TArrow;
........
........
........
procedure TForm1.Button4Click(Sender: TObject);
begin
aBitmap := TBitmap.Create;
aBitmap.SetSize(trunc(Image1.Width), trunc(Image1.Height));
aBitmap.Canvas.BeginScene;
// Задаю цвет
aBitmap.Canvas.Stroke.Color := TAlphaColorRec.Forestgreen;
// Рисую зеленую стрелку
aBitmap.Canvas.DrawLine(PointF(X0, Y0), PointF(arrow[1].x, arrow[1].y), 1);
aBitmap.Canvas.DrawLine(PointF(arrow[1].x, arrow[1].y),
PointF(arrow[2].x, arrow[2].y), 1);
aBitmap.Canvas.DrawLine(PointF(arrow[1].x, arrow[1].y),
PointF(arrow[3].x, arrow[3].y), 1);
aBitmap.Canvas.EndScene;
Image1.Bitmap.Assign(aBitmap);
aBitmap.Free;
end;
При первом нажатии кнопки полуаю ожидаемый результат.
Затем мне надо перерисовать эту стрелку в другом направлении.
Для этого пересчитываю x, y в arrow, нажимаю кнопку, вижу ужас.
Ноая стрелка нарисовалась правильно, но остались следы от старой стрелки в виде разбросанных пикселей от старой срелки.
Помогите, пожалуста, решить проблему. Спасибо!
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.