Фигур и анимация

Графика на Visual C++ и Java ч.2. Рисование геометрических

 

1)Рисование геометрических фигур в pictureBox Visual C++.

 

Установка цвета (Color) для рисования:

 

.....

public ref class Form1 : public System::Windows::Forms::Form

{

public:

Color cl;

.....

Выбор через coorDialog:

 

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)

{

if(colorDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)

{

int r,g,b;

cl=colorDialog1->Color;

// получение компонент

r=cl.R;

g=cl.G;

b=cl.B;

// установка цвета через компоненты

r=50;

g=100;

b=150;

cl = System::Drawing::Color::FromArgb(r,g,b);

}

}

 

 

 

Установка пера (Pen) и рисование линий:

 

......

public ref class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

{

InitializeComponent();

//

//TODO: добавьте код конструктора

//

}

Color cl;

Pen ^ p;

void Work() // метод для рисования

{

int R,G,B;

Bitmap^ bmp = gcnew Bitmap(400,230); // битовая карта для закрепления к pictureBox

Graphics^ g = Graphics::FromImage(bmp); // холст для рисования

pictureBox1->Image = bmp; // закрепление к pictureBox

R=250;

G=100;

B=150;

cl = System::Drawing::Color::FromArgb(R,G,B);

p=gcnew Pen(cl);

p->Width=3;

g->DrawRectangle(p,10,20,100,50);// left top width height

g->DrawLine(p,120,80,130,100);

}

...............................................

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)

{

Work();

}

 

 

 

Установка кисти (Brush) и закрашивание области:

 

Color cl,cl1;

Pen ^ p;

SolidBrush ^br;

void Work()

{

int R,G,B;

Bitmap^ bmp = gcnew Bitmap(400,230); // битовая карта для закрепления к pictureBox

Graphics^ g = Graphics::FromImage(bmp); // холст для рисования

pictureBox1->Image = bmp; // закрепление к pictureBox

R=250;

G=100;

B=150;

cl = System::Drawing::Color::FromArgb(R,G,B);

R=0;

G=200;

B=50;

cl1 = System::Drawing::Color::FromArgb(R,G,B);

p=gcnew Pen(cl);

p->Width=3;

g->DrawRectangle(p,10,20,100,50);// left top width height

br=gcnew SolidBrush(cl1);

g->FillRectangle(br,115,75,50,40);

}

 

 

 

http://msdn.microsoft.com/en-us/library/system.drawing.graphics.aspx

 

 

Сохранить изображение в файл:

.........

Color cl,cl1;

Pen ^ p;

SolidBrush ^br;

Bitmap^ bmp;

void Work()

{

bmp = gcnew Bitmap(400,230); // битовая карта для закрепления к pictureBox

int R,G,B;

.............

 

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)

{

Work();

bmp->Save("photonew.jpg", System::Drawing::Imaging::ImageFormat::Jpeg);

}

 

2)Рисование геометрических фигур в в Java SE.

 

Выбор цвета через colorChooser:

 

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JColorChooser;

import javax.swing.JFrame;

 

 

public class lab10

{

JFrame form;

JColorChooser colc;

Color c;

lab10()

{

form = new JFrame();

form.setBounds (10,20,500,500);

form.setTitle ("лабораторная 10");

form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

form.setLayout(null);

colc=new JColorChooser();

form.show();

c=new Color(255,255,255);

c=colc.showDialog(form,"Выбор цвета", c); // c-начальный выбор

}

public static void main (String args[])

{

lab10 f;

f= new lab10();

}

 

 

 

Рисование линий и заливка областей:

 

public void paintComponent(Graphics g)

{

Color c=new Color(10,200,150);

BasicStroke bc=new BasicStroke(3); // толщина линии 3

Graphics2D g2d = (Graphics2D) g; // холст для рисования

g2d.setColor(c);

g2d.setStroke(bc);

g2d.drawLine(10, 20,50, 40);

g2d.fillRect(30, 50, 100, 70);

}

 

 

http://download.java.net/jdk7/archive/b123/docs/api/java/awt/Graphics2D.html

 

Сохранить изображение в файл:

 

public class lab10

{

JFrame form;

pictureBox pc;

BufferedImage bi;

lab10()

{

form = new JFrame();

form.setBounds (10,20,500,500);

form.setTitle ("лабораторная 10");

form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

form.setLayout(null);

form.show();

pc=new pictureBox();

pc.setBounds(0, 0, 300, 300);

form.add(pc);

pc.DrawSave(); // нарисовать и схранить!

}

public static void main (String args[])

{

lab10 f;

f= new lab10();

}

 

class pictureBox extends JPanel // наследникот JPanel

{

public pictureBox ()

{

 

}

public void DrawSave()

{

bi = new BufferedImage(300,300,BufferedImage.TYPE_INT_RGB);

Graphics g=bi.getGraphics();

this.paintComponent(g); // рисование

try

{

ImageIO.write(bi, "jpg", new File("test.jpg")); // сохранение

}

catch (IOException e)

{

}

}

public void paintComponent(Graphics g) // рисование

{

Color c=new Color(10,200,150);

Graphics2D g2d = (Graphics2D) g;

g2d.setColor(c);

g2d.fillRect(30, 50, 100, 70);

}

}

}

 

3)Рисование геометрических фигур в Java ME.

 

import javax.microedition.lcdui.Canvas;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Graphics;

import javax.microedition.midlet.*;

public class lab10 extends MIDlet

{

private Display dsp;

private MyCanvas cv;

public void startApp()

{

cv= new MyCanvas();

dsp=Display.getDisplay(this);

dsp.setCurrent(cv);

}

public void pauseApp()

{

}

public void destroyApp(boolean unconditional)

{

}

class MyCanvas extends Canvas

{

protected void paint(Graphics g) // перегрузка метода paint

{

int R,G,B;

R=10;

G=200;

B=150;

g.setColor(R,G,B);

// g.setStrokeStyle(Graphics.DOTTED)точка; SOLIDлиния

g.drawLine(10, 20, 40, 50);

g.fillRect(70, 80,30,20);

}

}

 

}

 

 

список команд:

 

http://www.it.uc3m.es/florina/docencia/j2me/midp/docs/api/javax/microedition/lcdui/Graphics.html

 

4)Использование команд в Java ME.

 

Команды появляются на границе экрана и можно создать

отклик на выбор этой команды.