Саша Опубликовано 24 августа Поделиться Опубликовано 24 августа Здравствуйте! Вот фрагмент программы. 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 августа Поделиться Опубликовано 24 августа по умолчанию нарисован прозрачный фон поэтому копирование на другой битмап вполне может добавить только непрозрачные области, остальное оставить как было начните рисование с https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Graphics.TCanvas.Clear Цитата Ссылка на комментарий
0 Саша Опубликовано 24 августа Автор Поделиться Опубликовано 24 августа 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 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.