Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Part6(9-прилож)+++а.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.82 Mб
Скачать

Класс Graphics

C++/CLI и C#. Объект класса Graphics является контекстом рисования, связанным с конкретным контекстом устройства и чаще всего с окном (формой). Класс Graphics предоставляет множество функций для рисования в этом окне строк (strings), прямоугольников (rectangles), эллипсов (ellipses) и т.д. Например:

C++/CLI.

void DrawString (String ^pS, Font ^pF, Brush ^pB, float x, float y);

void DrawRectangle (Pen ^pP, Rectangle r);

void FillEllipse (Brush ^pB, Rectangle r);

C#.

void DrawString (string s, Font f, Brush b, float x, float y);

void DrawRectangle (Pen p, Rectangle r);

void FillEllipse (Brush b, Rectangle r);

Можно создать графический объект класса Graphics непосредственно, используя функцию CreateGraphics().

Graphics graphics= CreateGraphics ( );

Но чаще всего используют параметр функции перерисовки OnPaint(). Это параметр типа структуры PaintEventArgs, которая одним из своих элементов содержит свойство Graphics.

C#.

Graphics gr= this.CreateGraphics ( ); // Непосредственное использование gr.DrawString (“Drawing”, Font, new SolidBrush (Color.Blue), 10, 10);

C++/CLI.

protected:

virtual void OnPaint (PaintEventArgs ^arg) override // Использование через

// аргумент arg

{

Color col (Color::FromArgb (250, 0, 250, 250));

Drawing::Font ^pFont= gcnew Drawing::Font ("Verdana", 20,

FontStyle::Italic);

arg ->Graphics ->DrawString ("Drawing", pFont, gcnew SolidBrush (col),

10, 30);

}

Java. Язык Java использует пакет AWT, который содержит множество графических классов и функций. Среди классов есть и класс Graphics, содержащий, например, такие функции рисования как

void drawLine (int x1, int y1, int x2, int y2); // Рисовать линию

void drawOval (int x, inty, int w, int h); // Рисовать овал (эллипс)

void drawRect (int x, int y, int w, int h); // Рисовать прямоугольник

void drawString (String str, int x, int y); // Рисовать строку

void fillOval (int x, inty, int w, int h); // Залить овал (эллипс) цветом

void fillRect (int x, int y, int w, int h); // Залить прямоугольник цветом

void setColor (Color color); // Установить цвет

void setFont (Font font); // Установить шрифт

На языке Java также можно создать графический объект с помощью функции getGraphics() и затем воспользоваться функциями рисования, но рисование обычно осуществляется в теле предопределённой функции paint(), аргумент которой является ссылкой на объект графического класса Graphics.

Java.

public void paint (Graphics g) // Использование через аргумент arg

{

g.setColor(Color.magenta);

Font font= new Font ("Verdana", Font.ITALIC, 30);

g.setFont(font);

g.drawString ("Drawing", 10, 70);

}

Пример 9.6.1 иллюстрирует применение графики на языках C#, C++/CLI и Java(J#). В программах на языках C# и C++/CLI использовано пространство имён System.Drawing (System::Drawing), включающее графические классы. Прикладное окно программы представлено на рис. 9.6.1. Программа на языке Java(J#) применяет пакет java.awt.

Пример 9.6.1. Использование графического объекта.

///////////////

// C#

using System;

using System.Drawing;

using System.Windows.Forms;

class MainClass : Form

{

public MainClass ( )

{

Text= "Drawing"; // Заголовок прикладного окна

Show ( ); // Показать окно

Graphics gr= this.CreateGraphics ( ); // Создать графический объект

gr.DrawString ("Drawing", Font, // Нарисовать строку

new SolidBrush (Color.Blue), 10, 50);

gr.DrawString ("Drawing", new Font ("Arial", 25), // Нарис-ть строку new SolidBrush (Color.FromArgb (100, 255, 0, 0)), 5, 40);

String drawStr = "Drawing"; // Создать строку

Font drawFnt = new Font ("Arial", 30);// Создать шрифт

SolidBrush drawBr = new SolidBrush (Color.Green);// и кисть

float x= 10.0F; // Координаты начала строки

float y= 40.0F;

gr.DrawString (drawStr, drawFnt, drawBr, x, y); // Нарис-ть строку

gr.DrawEllipse (new Pen(new SolidBrush (Color.DarkViolet), 2),

15, 15, 60, 70); // Нарисовать эллипс

}

static void Main ( )

{

Application.Run (new MainClass ( )); // Запустить программу

}

}

////////////////

// C++/CLI

#include "stdafx.h"

#using <System.Drawing.dll>

#using <System.Windows.Forms.dll>

using namespace System;

using namespace System::Drawing;

using namespace System::Windows::Forms;

ref class MainClass : Form

{

public: MainClass ( )

{

Text= "Drawing"; // Заголовок прикладного окна

Show ( ); // Показать окно

Graphics ^gr= this->CreateGraphics ( ); // Создать графический

// объект

// Нарисовать строки

gr->DrawString ("Drawing", Font,

gcnew SolidBrush (Color::Blue), 10, 50);

gr->DrawString ("Drawing", gcnew Drawing::Font ("Arial", 25), gcnew SolidBrush (Color::FromArgb (100, 255, 0, 0)), 5, 40);

String ^drawStr = "Drawing";

Drawing::Font ^drawFnt = gcnew Drawing::Font ("Arial", 30);

SolidBrush ^drawBr = gcnew SolidBrush (Color::Green);

float x= 10.0F;

float y= 40.0F;

gr->DrawString (drawStr, drawFnt, drawBr, x, y);

// Нарисовать эллипс

gr->DrawEllipse (gcnew Pen (gcnew SolidBrush (Color::DarkViolet),

2), 15, 5, 60, 70);

}

};

void main ( )

{

Application::Run (gcnew MainClass ( ));

}

///////////////

// Java и J#

import java.awt.*;

class MainClass extends Frame

{

public MainClass ( )

{

this.setTitle ("Drawing"); // Заголовок прикладного окна

setSize (300, 200);

show ( ); // Показать окно

Graphics gr= this.getGraphics ( ); // Создать графический объект

// Нарисовать строку

gr.setColor (Color.blue);

gr.drawString ("Drawing",10, 80);

// Нарисовать ещё строку

gr.setFont(new Font ("Arial", Font.BOLD,25));

gr.drawString ("Drawing", 5, 70);

// Нарисовать еще строку

String drawStr = "Drawing"; // Создать строку

gr.setFont(new Font ("Arial", Font.BOLD, 30));

gr.setColor (Color.green);

int x= 10; // Координаты начала строки

int y= 40;

gr.drawString (drawStr, x, y); // Нарис-ть строку

gr.setColor (Color.darkGray);

gr.drawOval (15, 45, 60, 100); // Нарисовать эллипс

}

public static void main ( )

{

MainClass m= new MainClass ( );

}

}

Рис.9.6.1. Прикладное окно с графической информацией

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