А вот и нет :
Дайте угадаю, вы эту часть кода в принципе не написали, как с $undef было?)))
А вот и нет :
Дайте угадаю, вы эту часть кода в принципе не написали, как с $undef было?)))
в сущности никогда
Здравствуйте. Есть это :
writeln(pas, 'setPenColor(',DrawPen.Color,');');
writeln(pas, 'setBrushColor(',DrawBrush.color,');');
В файле получается так:
setPenColor(Color [A=255, R=128, G=255, B=0]);
setBrushColor(Color [Maroon]);
Как мне привести в общий RGB вид.
writeln(pas, $'SetPenColor(System.Drawing.Color.FromARGB({DrawPen.Color.ToARGB}))');
writeln(pas, $'SetPenColor(System.Drawing.Color.FromARGB({DrawBrush.Color.ToARGB}))');
.pas
файлов с помощью программ обычно свидетельствует о извращениях (из за нехватки какой то функции IDE или т.п.). Расскажите зачем вам, возможно есть способ красивее.```
begin
writeln;
end.
```
Будет выглядеть как:
begin
writeln;
end.
Символ ` находится в англ. раскладке, под ё. Кстати, заметьте что если на строчке с ``` есть что то ещё - оно криво работает или вообще ломается, поэтому оно должно быть на отдельной.
Идея такая, мы в pictureBox1
рисуем линии и тд в это время все что мы делаем переводится для Pascal ABC(который без.NET). На уроке мы не паримся набирая всё в ручную и сразу получаем *.pas
И да не могли бы Вы подробно объяснить 1. в 1.2 разве не
writeln(pas, $'SetBrushColor(System.Drawing.Color.FromARGB({DrawBrush.Color.ToARGB}))');
Интересно, то есть учитель требует обязательно код паскале без .net? И у меня на информатике, к примеру, были задания типо “нарисуйте график”, при чём учительница заставляла делать разметку циклами. У вас есть на этот случай план? И ещё, библиотека System.Drawing.dll
в паскале без .net вообще доступна?
Недавно добавили форматную строку:
begin
var i := 5;
var s := $'i*2 and +1 = {i*2+1}';
writeln(s);
end.
Выведет i*2 and +1 = 11
.
По сути, вторая строчка переводится компилятором в var s := string.Format('i*2 and +1 = {0}',i*2+1);
, вот только выглядит читабельнее.
В {}
ставится выражение, его результат превратит в текст и вставит в строку. Если у вас не компилируется - обновите паскаль, это ооочень недавно добавили.
Ещё, поэтому же, нет поддержки анализатора кода (Ctrl+Space, подсказка по нажатию точки и т.п.), но добавить собираются.
А, да… Вот так бывает когда копируешь не думая .
Ваш учитель, извините, что вещи их именами называю, офигел? Он что, считает, что графические библиотеки в Pascal ABC и PascalABC.NET совпадают?
Так, стоп, они совпадают? Я пытался сделать остановку программы, но vk_escape небыло. И нет, он не “офигел”. Спокойно считает что PascalABC и pascalABC.NET просто 2 версии 1 проекта. Ещё и обиделся когда я его поправил.
@Sun_Serega у нас в школе Linux стоит. PABC через неэмулятор wine работает. Они не захотели заморачиваться. Если так будет, то буду писать ручками, это задумывается для облегчения “тупого набора” которого у нас много. а dll для меня остаются пока загадкой.
Нет (и никогда не существовало PascalABC. Был (и закрыт десять с лишним лет назад Pasacal ABC, фактически копирующий синтаксис Turbo Pascal 7.0, за исключением графической библиотеки.
PascalABC.NET и Pascal ABC совершенно разные проекты, более того, из-за особенностей платформы .NET совместимость языка с Turbo Pascal была снижена вплоть до запрета некоторых операций.
На официальном сайте сказано, что
[30.08.17] Вышла версия 3.3.0.1531
- Новый модуль 3D-графики Graph3D
Новый модуль растровой графики GraphWPF
Модуль GraphABC объявляется устаревшим. Он будет входить в последующие версии, но обновляться не будет
Покажите это своему преподавателю. А заодно посмотрите эти шесть презентаций с главной страницы официального сайта.
Сказано то сказано… Только в справке, пока что, ни того, ни другого пока нет! И куды отсылать народ за справкой? В модули?
Чего “ни того, ни другого” в справке нет? Попробуйте выражать свои мысли так, чтобы не было потребности переспрашивать, о чем это Вы вообще?
Вот этого нет в справке!
А презентация на сайте — это не дело!
Сегодня она на сайте присутствует, а завтра уберут и „упс-с-с“… Не чем будет преподавателям тыкать ;–(
А с каких это пор и в каком продукте изменения в версиях пишутся в Справке? Для этого и существует официальный сайт, на котором в целом отслеживается версионность. ЧТО НОВОГО
А презентация - это чтобы быстрее понять особенности языка и их использование. А не тупо утверждать (неизвестно на каком основании), что два разных проекта на самом деле - просто две версии.
С чего Вы взяли, что уберут? А так обычно версионность пишется на оф. сайте, либо после обновления в отдельном экране выводится, либо о программе.
Это выводит при RGB 0,0,0 значение -1677726, а мне надо всавить в функцию RGB она понимает только 0,0,0. Такого нет?
Есть 2 функции Color.FromARGB
. Одна принимает 1 число на 4 байта, а другая 4 числа по 1 байту. Первая быстрее работает. Ну а если в вашем случае нету функции первого типа - поставьте точку после DrawPen.Color
, вам покажет всё что есть в Color
. Почитайте описания - найдёте.
У меня, к сожалению, эта функция сбрасывается после каждого закрытия паскаля, и начинает работать только для новой переменной, может из-за того что стоит win10. И ещё не знаете где найти исходники GraphABC для PascalABC?
Если у вас анализатор кода ломается - надо найти минимальный набор действий ведущий к его поломке и залить это в issues, а не мирится. И я сомневаюсь что вин10 виновата, это в более старых версиях, как XP, может быть что то, и то вряд ли.
Посмотрел только что, там свойства A
, R
, G
и B
, так и называются. Доступны только для чтения.
Исходники всех стандартных модулей есть в папке
Именно для того что без .net - не представляю, в интернете ищите, где то, или поиском в проводнике… А для .net в
C:\Program Files (x86)\PascalABC.NET\LibSource
Про win10 точно, проверил на 7-ке. Может я что то не поставил(.net стоит). Ломается на моём проекте и всё. Вот скриншот
PictureBox1 объявлен, но в списке его нет. Может проверите мой проект на вашем ПК.
DrawN2.rar (104,2 КБ)
И ещё в GraphABC
есть процедура
procedure Picture.FloodFill(x, y: integer; c: Color);
var
hdc, hBrush, hOldBrush: IntPtr;
begin
var borderColor: Color := GetPixel(x, y);
var bc := ColorTranslator.ToWin32(borderColor);
var cc := ColorTranslator.ToWin32(c);
Monitor.Enter(f);
hdc := gbmp.GetHDC();
hBrush := CreateSolidBrush(cc);
hOldBrush := SelectObject(hdc, hBrush);
ExtFloodFill(hdc, x, y, bc, 1);
SelectObject(hdc, holdBrush);
DeleteObject(hBrush);
gbmp.ReleaseHdc();
DeleteObject(hdc);
Monitor.Exit(f);
end;
Она заполняет область ограниченную, например, линиями. Как её подогнать под мой проект?.