Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VSRPP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
181.63 Кб
Скачать

36 Аспекты безопасности .Net. Изолированные хранилища

Помимо возможности чтения и записи данных в реестр существует также возможность читать и записывать значения в так называемое изолированное хранилище. Изолированное хранилище должно использоваться при наличии проблем с записью данных в реестр или на диск в целом. Его довольно легко применять для хранения как информации о состоянии приложений, так и пользовательских настроек.

Изолированное хранилище можно считать, по сути, виртуальным диском, где хранятся элементы, к которым должен быть разрешен общий доступ как только приложению, которым они были созданы, так и другим экземплярам этого же приложения. Доступ к изолированному хранилищу может осуществляться двумя способами. Первый подразумевает получение доступа пользователем и сборкой.

Второй способ подразумевает получение доступа к изолированному хранилищу пользователем, сборкой и доменом.

37 Аспекты безопасности .Net. Криптография

Конфиденциальные данные должны обязательно защищаться, чтобы их не могли прочитать пользователи, не обладающие необходимыми правами. Это касается как данных, которые пересылаются по сети, так и хранимых данных. Данные можно шифровать с помощью симметричных или асимметричных ключей.

В технологии шифрования с использованием симметричного ключа для шифрования и дешифрации может применяться один и тот же ключ. В технологии шифрования с использованием асимметричного ключа для шифрования и дешифрации применяются два разных ключа: открытый (public key) и секретный (private key). Данные, зашифрованные с помощью открытого ключа, могут быть расшифрованы с помощью соответствующего секретного ключа. Данные, зашифрованные с помощью секретного ключа, могут расшифровываться с использованием соответствующего секретного ключа, но не открытого.

В .NET Framework классы для шифрования находятся в пространстве имен System.Security.Cryptography и реализуют несколько симметричных и асимметричных алгоритмов. Здесь можно найти разные классы алгоритмов для множества различных целей.

38. Работа с ключами реестра в .Net.

Доступ к реестру позволяют получать два класса из пространства имен Microsoft.Win32: Registry и RegistryKey. Экземпляр RegistryKey представляет ключ реестра. В этом классе есть методы для просмотра дочерних ключей, для создания новых ключей, а также для чтения и изменения значений в существующих ключах, т.е. можно выполнять все, что обычно требуется делать с ключами реестра, в том числе устанавливать для них уровни безопасности. Именно этот класс применяется для выполнения большей части работы с реестром.

Registry представляет собой класс, который позволяет получать эксклюзивный доступ к ключам реестра для выполнения простых операций. Другим предназначением класса Registry является предоставление экземпляров RegistryKey, представляющих ключи наивысшего уровня, т.е. разделы, которые позволяют осуществлять навигацию по реестру. Предоставляются эти экземпляры через семь статических свойств со следующими именами: ClassesRoot, CurrentConfig, CurrentUser, DynData, LocalMachine, PerformanceData и Users

Реестр имеет иерархическую структуру, которая состоит из 5 разделов. Внутри разделов находится древовидная структура ключей реестра. Каждый из них во многом напоминает папку или файл в файловой системе. Однако между ними имеется одно очень важное отличие. В файловой системе различаются файлы (в которых хранятся данные) и папки (в которых главным образом содержатся другие файлы или папки), а в реестре присутствуют только ключи. В каждом ключе могут содержаться как данные, так и другие ключи.

39. Графический интерфейс GDI+. Класс Graphics. Рисование геометрических фигур. Линия. Набор линий.

GDI — это интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие как мониторы и принтеры. GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры.

Graphics класс является абстрактным базовым классом для всех графических контекстов, которые позволяют приложению тянуть на компоненты, которые понимаются на различных устройствах, так же как на вне экранные изображения.

Для того чтобы рисовать, художнику нужна кисть. Программист, создающий приложение GDI+, тоже нуждается в инструментах для рисования. Мы создадим кисть как объект класса SolidBrush:

SolidBrush redBrush = new SolidBrush(Color.Red);

С помощью этой кисти можно рисовать замкнутые геометрические фигуры, закрашенные заданным цветом. Через единственный параметр мы передаем конструктору класса SolidBrush цвет кисти Color.Red. Таким образом, мы будем рисовать кистью красного цвета.

В классе Graphics имеется множество различных методов, предназначенных для рисования самых разных геометрических фигур, таких как линии, прямоугольники, овалы и окружности, многоугольники, кривые Безье и т.д.

Метод DrawLine, как это нетрудно догадаться из его названия, рисует линию, соединяющую две точки с заданными координатами.

public void DrawLine(Pen, Point, Point);

public void DrawLine(Pen, PointF PointF;

public void DrawLine(Pen, int, int, int, int);

public void DrawLine(Pen, float, float, float, float);

Первый параметр задает инструмент для рисования линии — перо. Перья создаются как объекты класса Pen, например: Pen p = new Pen(Brushes.Black,2);

В классах Point и PointF определены свойства X и Y, задающие, соответственно, координаты точки по горизонтальной и вертикальной оси. При этом в классе Point эти свойства имеют целочисленные значения, а в классе PointF — значения с плавающей десятичной точкой.

Третий и четвертый вариант метода DrawLine позволяет задавать координаты соединяемых точек в виде двух пар чисел. Первая пара определяет координаты первой точки по горизонтальной и вертикальной оси, а вторая — координаты второй точки по этим же осям. Разница между третьим и четвертым методом заключается в использовании координат различных типов (целочисленных int и с плавающей десятичной точкой float).

Набор линий

Вызвав один раз метод DrawLines, можно нарисовать сразу несколько прямых линий, соединенных между собой. Иными словами, метод DrawLines позволяет соединить между собой несколько точек. Координаты этих точек по горизонтальной и вертикальной оси передаются методу через массив класса Point или PointF:

public void DrawLines(Pen, Point[]);

public void DrawLines(Pen, PointF[];

//

using System.Drawing.Drawing2D;//для сглаживания

Pen pen = new Pen(Color.Black, 2);

Point[] points = new Point[50];

for(int i=0; i < 20; i++)

{ points[i] = new Point(i, 10 * i); }

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{ Graphics g=e.Graphics;

g.Clear(Color.White);

g.SmoothingMode = SmoothingMode.HighQuality;//сглаживание

g.DrawLines(pen, points); }

40 Графический интерфейс GDI+. Рисование геометрических фигур. Прямоугольник. Набор прямоугольников. Многоугольник.

Метод DrawRectangle позволяет рисовать прямоугольники, заданные координатой верхнего левого угла, а также шириной и высотой. В библиотеке классов .NET Frameworks имеется три перегруженных варианта этого метода:

public void DrawRectangle(Pen, Rectangle);

public void DrawRectangle(Pen, int, int, int, int);

public void DrawRectangle(Pen, float, float, float, float);

В качестве первого параметра этим методам передается перо класса Pen. Остальные параметры задают расположение и размеры прямоугольника.

Набор прямоугольников

За один вызов метода DrawRectangles программа может нарисовать сразу несколько прямоугольников. Существует два перегруженных варианта этого метода:

public void DrawRectangles(Pen, Rectangle[]);

public void DrawRectangles(Pen, RectangleF[]);

Первый из этих методов получает в качестве второго параметра ссылку на массив объектов класса Rectangle, описывающих размеры и расположение прямоугольных областей.

В классе Form1 этого приложения мы определили перо myPen и массив вложенных друг в друга прямоугольников myRectsArray:

Pen myPen = new Pen(Color.Black, 2);

Rectangle[] myRectsArray =

{ new Rectangle(10, 10, 200, 200), new Rectangle(20, 20, 180, 180), new Rectangle(30, 30, 160, 160),

new Rectangle(40, 40, 140, 140) };

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{ Graphics g=e.Graphics; g.Clear(Color.White); g.DrawRectangles(myPen, myRectsArray);}

Многоугольник

public void DrawPolygon(Pen, Point[]);

public void DrawPolygon(Pen, PointF[]);

В первом случае методу DrawPolygon через второй параметр передается массив точек класса Point, в котором координаты точек заданы целыми числами, а во втором — массив класса PointF, где координаты соединяемых точек задаются в виде числе с плавающей десятичной точкой.

Pen myPen = new Pen(Color.Black, 2);

Point[] myPoints =

{ new Point(10, 10), new Point(100, 40), new Point(50, 240), new Point(150, 24),

new Point(100, 100), new Point(160, 40), new Point(220, 210) };

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

Graphics g=e.Graphics; g.Clear(Color.White); g.DrawPolygon(myPen, myPoints); }

41 Графический интерфейс GDI+. Рисование геометрических фигур. Эллипс. Сегмент эллипса. Замкнутый сегмент эллипса.

Предусмотрено четыре перегруженных варианта метода DrawEllipse:

public void DrawEllipse(Pen, Rectangle); public void DrawEllipse(Pen, RectangleF);

public void DrawEllipse(Pen, int, int, int, int); public void DrawEllipse(Pen, float, float, float, float); эти методы отличаются только способом, при помощи которого описывается расположение и размеры прямоугольной области, в которую вписан эллипс. Вы можете задавать расположение и размеры этой области в виде рассмотренных ранее объектов класса Rectangle, RectangleF, а также в виде целых чисел или числе с плавающей десятичной точкой.

При помощи метода DrawArc программа может нарисовать сегмент эллипса. Сегмент задается при помощи координат прямоугольной области, в которую вписан эллипс, а также двух углов, отсчитываемых в направлении против часовой стрелки. Первый угол Angle1 задает расположение одного конца сегмента, а второй Angle2 — расположение другого конца сегмента. Предусмотрено четыре перегруженных варианта метода DrawArc: public void DrawArc(Pen, Rectangle, float, float);

public void DrawArc(Pen, RectangleF, float, float); public void DrawArc(Pen, int, int, int, int, int, int); public void DrawArc(Pen, float, float, float, float, float, float);

Первый параметр метода DrawArc определяет перо, с помощью которой будет нарисован сегмент. Последние два параметра задают углы Angle1 и Angle2.

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{ Pen myPen = new Pen(Color.Black, 2); Graphics g=e.Graphics; g.Clear(Color.White);

g.DrawArc(myPen, 10, 10, 200, 150, 30, 270); }

Для рисования замкнутого сегмента эллипса (pie) Вы можете воспользоваться методом DrawPie.

Имеется 4 перегруженных варианта этого метода:

public void DrawPie(Pen, Rectangle, float, float); public void DrawPie(Pen, RectangleF, float, float);

public void DrawPie(Pen, int, int, int, int, int, int); public void DrawPie(Pen, float, float, float, float, float, float);

В качестве первого параметра методу нужно передать перо для рисования. Последние два параметра определяют углы, ограничивающие сегмент эллипса. Эти углы используются таким же образом, как и при рисовании незамкнутого сегмента эллипса методом DrawArc, рассмотренным выше. Остальные параметра задают расположение и размеры прямоугольника, в который вписывается сегмент эллипса.

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{ Pen myPen = new Pen(Color.Black, 2);

int xPos = 10; int yPos = 10; int width = 250; int height = 150;

int startAngle = 20; int endAngle = 75;

Graphics g=e.Graphics; g.Clear(Color.White);

g.DrawPie(myPen, xPos, yPos, width, height, startAngle, endAngle);

g.DrawRectangle(new Pen(Color.Black, 1), xPos, yPos, width, height); }

Здесь через переменные xPos, yPos, width и height передаются координаты левого верхнего угла и размеры прямоугольной области, в которую вписывается сегмент эллипса. Переменные startAngle и endAngle задают углы, ограничивающие сегмент.

42. Графический интерфейс GDI+. Рисование геометрических фигур. Кривые Безье. Канонические сплайны.

Кривая Безье, представляющая собой одну из разновидностей сплайна, задается четырьмя точками. Две из них — начальная и конечная, а две другие — управляющие. Кривая Безье проходит через начальную и конечную точки, а управляющие точки задают изгибы кривой линии. Для рисования кривых Безье имеются два перегруженных набора методов DrawBezier и DrawBeziers: public void DrawBezier(Pen, Point, Point, Point, Point); public void DrawBezier(Pen, PointF, PointF, PointF, PointF); public void DrawBezier(Pen, float, float, float, float, float, float, float, float); public void DrawBeziers(Pen, Point[]); public void DrawBeziers(Pen, PointF[]); Во всех этих методах первый параметр задает перо, которая будет использована для рисования. Остальные параметры задают координаты начальной, конечной и управляющих точек.

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{ Pen myPen = new Pen(Color.Black, 2); PointF startPt = new PointF(40.0F, 80.0F);

PointF control1Pt = new PointF(30.0F, 10.0F); PointF control2Pt = new PointF(350.0F, 250.0 F); PointF endPt = new PointF(400.0F, 100.0F);

PointF[] myBezierPoints = { startPt, control1Pt, control2Pt, endPt };

Graphics g=e.Graphics; g.Clear(Color.White); g.DrawBeziers(myPen, myBezierPoints); }

Здесь мы создаем начальную и конечную точки startPt и endPt, через которые проходит наша кривая, а также управляющие точки control1Pt и control2Pt. Координаты всех точек передаются методу DrawBeziers через массив myBezierPoints. Управляющие точки изгибают линию, как бы притягивая ее к себе

линии канонического или обычного сплайна (cardinal spline) проходит через все заданные точки. Для рисования обычных сплайнов предусмотрены методы DrawCurve и DrawClosedCurve. Первый из этих методов рисует незамкнутую кривую линию (открытый сплайн), а второй — замкнутую (закрытый сплайн).

В простейшем случае методам передается перо и массив соединяемых точек:

public void DrawCurve(Pen, Point[]); public void DrawCurve(Pen, PointF[]);

public void DrawCurveClosed(Pen, Point[]); public void DrawCurveClosed(Pen, PointF[]);

Существуют версии методов, позволяющие дополнительно задать так называемую жесткость (tension) сплайна. Жесткость задается в виде третьего дополнительного параметра:

public void DrawCurve(Pen, Point[], float); public void DrawCurve(Pen, PointF[], float);

public void DrawClosedCurve(Pen, Point[], float, FillMode);

public void DrawClosedCurve(Pen, PointF[], float, FillMode);

Методу DrawClosedCurve дополнительно задается параметр типа FillMode. Если значение этого параметра равно FillMode.Alternate, при рисовании самопересекающихся замкнутых сплайнов будут чередоваться закрашенные и не закрашенные области. Если же значение этого параметра равно FillMode.Winding, большинство замкнутых областей будет закрашено.

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{ Pen myPen = new Pen(Color.Black, 2);

PointF pt1 = new PointF(40.0F, 80.0F); PointF pt2 = new PointF(30.0F, 10.0F);

PointF pt3 = new PointF(350.0F, 250.0F); PointF pt4 = new PointF(400.0F, 100.0F);

PointF[] myPoints = { pt1, pt2, pt3, pt4 };

Graphics g=e.Graphics; g.Clear(Color.White); g.DrawClosedCurve(myPen, myPoints, (float)0.3, FillMode.Alternate);}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]