Графика на 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);
}
https://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);
}
https://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);
}
}
}
список команд:
https://www.it.uc3m.es/florina/docencia/j2me/midp/docs/api/javax/microedition/lcdui/Graphics.html
4)Использование команд в Java ME.
Команды появляются на границе экрана и можно создать
отклик на выбор этой команды.