
Полная версия:
Программирование для Android и работа с датчиками в среде Delphi 11
endScene;
end;
В случае сессии 1 рисуется одна линия, а при сессии 2 рисуются (отображаются на экране) обе линии.
Для свободного выбора цветов введем компонент ColorListBox, а для изменения размера линии введем SpinBox. При этом нужно, чтобы они запоминались и считывались по мере увеличения числа сессий; при этом каждая сессия – новый компонент Path и новые установки рисования, причем все возможно задействованные в рисовании компоненты Path должны быть заранее объявлены и созданы как первый.
Новые сессии даже с аналогичным предудыщим старым набором свойств будут задействовать новый Path. Это касается и элемента «Ластик» который по существу является кистью с цветом фона (и настраиваемым размером); причем повторные обращения к Ластику приведут к новому задейстованному компоненту Path и новой сессии.
Для запоминания предудущих сессий подойдет элемент StringGrid, с простым обращением к его ячейкам – StringGrid. Cells [col, row]:
NumberBox1.Value :=NumberBox1.Value +1;//Новая сессия
StringGrid1.Cells [0, Round(NumberBox1.Value)]:= FloatToStr (SpinBox1.Value); //Новая сессия записывается по № сессии
StringGrid1.Cells [1, Round(NumberBox1.Value)]:= FloatToToStr (ColorListBox1.Color);
Для SpinBox1.Value размерность Double, что требует преобразовать его значение в FloatToStr () для таблицы, воспринимающей строковые данные. Для ColorListBox.Color цвет TAlphaColors может выражаться несколькими способами, в том числе цифрами, поэтому казалось бы возможно преобазование IntToStr (), так как цвет в TAlphaColors – это целое число, но это 10-значное число, превосходящее Integer, поэтому используется Double: FloatToStr () для записи, а для чтения из таблицы: Round (StrToFloat ()), так как цвет – это целое число, а Float дробное.
Для строки Таблицы используется номер сессии: NumberBox1.Value, причем, так как NumberBox1.Value имеет размерность Double, а для таблицы нужно целое число, можно NumberBox1.Value округлить: Round ().
В конечном итоге для 3-х сессий получим следующий код:
procedure TForm1.PaintBox1Paint (Sender: TObject; Canvas: TCanvas);
var
i: Integer;
begin
Sender:=PaintBox1;
with Canvas do
if (Path.Count> 0) and (BeginScene) then
try
Stroke.Kind:=TBrushKind.Solid;
if NumberBox1.Value = 1 then //Если первая сессия
begin //Начальные установки – черный цвет на блом фоне
Stroke.Color:= TAlphaColors. Black;
Stroke.Thickness:= 2;
DrawPath (Path,1);
end;
if NumberBox1.Value = 2 then
begin
Stroke.Color:= TAlphaColors. Black;//Сессия 1
Stroke.Thickness:= 2;
DrawPath (Path,1);
Stroke.Thickness:= StrToInt (StringGrid1.Cells [0, 2]); //Сессия 1
Stroke.Color:= Round (StrToFloat (StringGrid1.Cells [1, 2]));
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
Вы ознакомились с фрагментом книги.
Для бесплатного чтения открыта только часть текста.
Приобретайте полный текст книги у нашего партнера:
Полная версия книги
Всего 10 форматов