Приветствую всех читателей блога. Как и говорил Евгений, теперь здесь будут публиковаться статьи о программировании на PascalABC.NET. Сейчас я хотел бы немного рассказать об этой системе программирования и самом языке. Предупреждаю сразу, в этой статье мы не будем заниматься программированием т.к. она ознакомительная, поэтому кто ждёт примеров кода и программ, ждите 2-ой статьи. И так, начнём!
PascalABC.NET – это язык Delphi (Object Pascal) для платформы Microsoft .NET, содержащий все основные элементы современных языков программирования: модули, классы, перегрузку операций, интерфейсы, исключения, обобщенные классы, сборку мусора, а также некоторые средства параллельности, в том числе директивы OpenMP. (c) оф. сайт PascalABC.NET
Проще говоря, Pabc.NET - это обычный PascalABC, с возможностью использовать платформу .NET. Благодаря этой возможности мы получаем инструмент, не уступающий по функционалу таким мощным языкам как C#, Delphi, VB.NET и пр., но при этом, сохранивший простоту языка Pascal. Pabc.NET, как и многие другие паскали, ориентирован на обучение программированию, не смотря на это, на нём можно создавать достаточно сложные программы.
PascalABC.NET больше всего схож с Delphi и PascalABC. Об их отличиях можно почитать тут (Pabc.NET vs Pabc) и тут (Pabc.NET vs Delphi).
Пример программы на PascalABC.NET:
// Посчитать кол-во букв "А" в слове
var
Count: integer;
S: string;
begin
// Вводим слово
WriteLn('Введите слово:');
ReadLn(S);
// Считаем кол-во букв
for var i := 1 to S.Length do
if (S[i] = 'А') or (S[i] = 'а') then
Inc(Count);
// Выводим результат
WriteLn('Кол-во букв "А" в слове "', S ,'" = ', Count);
end.
Думаю на этом предварительное знакомство с языком можно закончить, более подробно о нём, я расскажу в следующих статьях.
С ув. BaboshinSD.
Метки: Уроки PascalABC.NET
BaboshinSD
Просмотров: 4 452
Запись опубликована в 16:07
Знаю, что это плохое дело, но все же иногда возникают моменты, когда нужно обработать какую-то картинку под свои нужды, но зачастую на пути встречаются различные препятствия, которые можно обойти с помощью простого Paint'а, мощного Photoshop'а или же с помощью других специальных программ.
Сегодня я расскажу с помощью какой программы можно просто и быстро убрать водяной знак или любой другой элемент с картинки.
Работать мы будем в программе под названием Teorex Inpaint
Возможно для саморазвития я приведу практически два одинаковых примера перемещения формы.
Первый вариант с помощью API функций SendMessage и ReleaseCapture:
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Integer, ByVal wMsg As Integer, _
ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
ReleaseCapture()
SendMessage(Me.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.FormBorderStyle = FormBorderStyle.None
End Sub
Слишком много кода, не правда ли?
Второй вариант, с помощью структуры Message, посылаем сообщение Windows:
Private Const WM_NCHITTEST As Integer = &H84
Private Const HTCAPTION = 2
Protected Overrides Sub WndProc(ByRef m As Message)
If (m.Msg = WM_NCHITTEST) Then
m.Result = IntPtr.op_Explicit(HTCAPTION)
Else
MyBase.WndProc(m)
End If
End Sub
Imports System.Drawing.Drawing2D
Public Class Form1
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
Me.BackColor = Color.Black
'создаем лист для рисования 58х43
Dim bm As New Bitmap(CInt(Me.ClientSize.Width / 5), CInt(Me.ClientSize.Height / 5))
'создаем траекторию
Dim pth As New GraphicsPath
'добавим строку в заданном стиле
pth.AddString("VB.NET", New FontFamily("Tahoma"), CInt(FontStyle.Bold), 48, New Point(70, 60), StringFormat.GenericTypographic)
'создаем поверхность для рисования
Dim g As Graphics = Graphics.FromImage(bm)
Dim mx As Matrix
mx = New Matrix(1.0F / 5, 0, 0, _
1.0F / 5, -(1.0F / 5), _
-(1.0F / 5))
'выберем режим сглаживания для поверхности
g.SmoothingMode = SmoothingMode.AntiAlias
'преобразуем объект Graphics
g.Transform = mx
'создадим перо
Dim p As New Pen(Color.Tomato, 3)
'рисуем вокруг созданного пути
g.DrawPath(p, pth)
'и заполняем для лудшего эфекта
g.FillPath(Brushes.Yellow, pth)
'освобождаем ресурсы
g.Dispose()
'установим режим сглаживания для контура (действие на форму)
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias
'e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic
'и расширяем картинку для создания размытости краев
e.Graphics.DrawImage(bm, ClientRectangle, 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)
'перерисовываем оригинальный текст
e.Graphics.FillPath(Brushes.Black, pth)
'освобождаем ресурсы
pth.Dispose()
End Sub
End Class