『壹』 java中swing繪制圖形問題
//完整程序如下
import java.awt.*;
import javax.swing.*;
public class DrawPolygon extends JFrame {
boolean closed;
boolean filled;
int[] x,y;
int count;
boolean canDraw=false;
public DrawPolygon() {
super("畫多邊形");
setBounds(100,100,400,300);
count=0;
setVisible(true);
while (count==0) {
try {
count=Integer.parseInt(JOptionPane.showInputDialog(this,"輸入多邊形點個數","頂點",JOptionPane.INFORMATION_MESSAGE));
if (count<3 || count>10) {
JOptionPane.showMessageDialog(this,"輸入的頂點數不在3-10范圍之內","頂點",JOptionPane.ERROR_MESSAGE);
count=0;
}
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(this,"輸入的不是合法整數","頂點",JOptionPane.ERROR_MESSAGE);
}
}
x=new int[count];
y=new int[count];
for (int i=0; i<count; i++) {
y[i]=0;
while (y[i]==0) {
try {
String s=JOptionPane.showInputDialog(this,"輸入第"+String.valueOf(i+1)+"個點的坐標:\n例如:80,120","頂點",JOptionPane.INFORMATION_MESSAGE);
if (s==null) {
return;
}
x[i]=Integer.parseInt(s.substring(0,s.indexOf(',')));
y[i]=Integer.parseInt(s.substring(s.indexOf(',')+1));
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(this,"輸入的點坐標不合法","頂點",JOptionPane.ERROR_MESSAGE);
}
}
}
closed=false;
filled=false;
if (JOptionPane.showConfirmDialog(this,"是否封閉圖形?","封閉",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) {
closed=true;
}
if (JOptionPane.showConfirmDialog(this,"是否填充圖形?","填充",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) {
filled=true;
}
canDraw=true;
repaint();
}
public void paint(Graphics g) {
g.clearRect(0,0,getWidth(),getHeight());
if (canDraw && count>=3 && count<=10) {
if (filled) {
g.fillPolygon(x,y,count);
}
if (closed) {
g.drawPolygon(x,y,count);
} else {
g.drawPolyline(x,y,count);
}
}
}
public static void main(String[] args) {
new DrawPolygon();
}
}
『貳』 用Java實現畫圖板功能的程序,請問如何編寫一個繪制三角形的程序段
class Triangle extends drawings//空心三角形類
{
void draw(Graphics2D g2d)
{g2d.setPaint(new Color(R,G,B));
g2d.setStroke(new BasicStroke(stroke,
BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));
g2d.drawLine((int)((x1+x2)/2),Math.min(y1,y2),Math.max(x1,x2),Math.max(y1,y2));
g2d.drawLine(Math.max(x1,x2),Math.max(y1,y2),Math.min(x1,x2),Math.max(y1,y2));
g2d.drawLine(Math.min(x1,x2),Math.max(y1,y2),(int)((x1+x2)/2),Math.min(y1,y2));
}
}
以上是通過繪制三條直線作為三角形的三條邊來繪制三角形.
class fillTriangle extends drawings//實心三角形
{
void draw(Graphics2D g2d)
{g2d.setPaint(new Color(R,G,B));
g2d.setStroke(new BasicStroke(stroke));
int mx=(int)((x1+x2)/2);
int[] x={mx,Math.max(x1,x2),Math.min(x1,x2)};
int[] y={Math.min(y1,y2),Math.max(y1,y2),Math.max(y1,y2)};
g2d.fillPolygon(x,y,3);
}
}
以上是用填充多邊形的方式填充一個三角形,如果把最後的:g2d.fillPolygon(x,y,3)改為g2d.drawPolygon(x,y,3); 則是以繪制多邊形的方式繪制空心三角形.
這里說明一下:因為(x1,y1,x2,y2)只能確定一個矩形區域,即滑鼠拉動的起點和終點確定的矩形區域所以可以有多種方式確定三角形的三個頂點,我這個用的三個頂點是:
點1( (x1+x2)/2, min(y) ) 點2( max(x),max(y) ) 點3( min(x),max(y) )
你的補充內容太多了,沒心情看啊,太累了
『叄』 java為圖形填充顏色
只需把g.drawOval(...)改成g.setColor(Color.RED); g.fillOval(..)就行了,drawOval是只畫不填充,而fillOval是畫並且填充,填充的顏色是由g.setColor()方法的參數決定的。
『肆』 java畫多邊形和三角形
python">好像不難不過我不是用java寫的思路大概就這樣
self.list=[]
defonStart(self,event):
self.list.append((event.x,event.y))
defonPolygondraw(self):
i=askinteger("問題","你要幾邊形啊",minvalue=1,
maxvalue=7)
polygon=[]
foriinrange(i):
polygon.append(self.list[-i-1])
self.panel.create_polygon(polygon)
『伍』 java裡面怎麼畫多邊形
如果是可以用正方形,三角形,圓形等基本圖形拼接出來的多邊形,可以使用area,然後對基本圖形取交集或者並集即可
『陸』 java裡面怎麼畫多邊形
我採取的方式是畫直線,在點擊右鍵的時候再把第一個點和最後一個點連接起來,這個是不規則的多邊形,像五角星,六角星那些規則的,就用drawPolygon(int[] xPoints,int[] yPoints,int nPoints)方法,對於每個點的X,和y這個就要自己去計算,有規律的,都是按比例去計算得到點。
『柒』 java 畫多邊形。。
自己查api,Graphics類有個花封閉曲線的方法,傳進去一組x坐標,一組Y坐標
要麼用AlphaComposite做顏色混合,選擇src_over
SRC_OVER混合規則把源像素(新的像素)組合到目的像素(原有像素)上面,這樣重疊的部分就只顯示了源像素的顏色。如果你開始渲染一個藍色矩形,然後把一個紅色矩形和它部分重疊,則重疊的部分會被渲染為紅色。換句話說最後被渲染成的顏色將在最上面顯示出來。
『捌』 Java繪圖類Graphics中drawPolygon方法繪多邊形原理
60 10 , 35 90, 110 40 以此類推卅。。。int[] x是裝的X的所有坐標,y[]亦如此。 對應下就好了
『玖』 java中的Graphics類方法可以繪制三角形嗎怎樣表示,如果不可,又怎樣繪制
可以的。Griphics類中有一個畫多邊形的方法
public void drawPolygon(int xPoints[],int yPoints[],int nPoints)//繪制多邊形
xPoints[]存放的是各個點的x坐標,yPoints[]存放的是各個點的y坐標,nPoints是有幾條邊
public void fillPolygon()//填充多邊形
『拾』 用java編程: 在JFrame窗體中繪制五角星,並用紅色填充
importjava.awt.Color;
importjava.awt.Graphics;
importjava.awt.Point;
importjavax.swing.JLabel;
{
=-3847465547528967067L;
privatePointpointA;
privatePointpointB;
privatePointpointC;
privatePointpointD;
privatePointpointE;
privatePointpointLeftInner;
privatePointpointRightInner;
privateintpix;
privatestaticColorbgColor=Color.YELLOW;
privatestaticColorfieldColor=Color.RED;
publicstaticvoidsetBgColor(ColorbgColor){
Pentagram.bgColor=bgColor;
}
publicstaticvoidsetFieldColor(ColorfieldColor){
Pentagram.fieldColor=fieldColor;
}
/**只有width有效,把label弄成正方的*/
publicvoidsetBounds(intx,inty,intwidth,intheight){
super.setBounds(x,y,width,width);
}
/**只有width有效,把label弄成正方的*/
publicvoidsetSize(intwidth,intheight){
super.setSize(width,width);
}
publicvoidsetSize(intsize){
setSize(size,size);
}
publicPentagram(intsize){
pix=size/12;
setSize(pix*12);
initPoints();
}
privatevoidinitPoints(){
pointA=newPoint(6*pix,0);//上邊中間點
pointB=newPoint(0,4*pix);//左邊上面點
pointC=newPoint(12*pix,4*pix);//右邊上面點
pointD=newPoint(3*pix,12*pix);//左邊下面點
pointE=newPoint(9*pix,12*pix);//右邊下面點
pointLeftInner=newPoint(5*pix,4*pix);//左邊裡面的點
pointRightInner=newPoint(7*pix,4*pix);//右邊裡面的點
}
privatevoiddraw(Graphicsg){
fillPolygon(g,pointA,pointLeftInner,pointRightInner);
fillPolygon(g,pointB,pointE,pointRightInner);
fillPolygon(g,pointC,pointD,pointLeftInner);
}
/**
*已知點,填充多邊形。
*@paramg畫筆
*@parampoints已知的'點'們
*/
privatevoidfillPolygon(Graphicsg,Point...points){
int[]xPoints=newint[points.length];
int[]yPoints=newint[points.length];
for(inti=0;i<points.length;i++){
xPoints[i]=points[i].x;
yPoints[i]=points[i].y;
}
g.fillPolygon(xPoints,yPoints,points.length);
}
publicvoidpaint(Graphicsg){
g.setColor(bgColor);
g.fillRect(0,0,12*pix,12*pix);
g.setColor(fieldColor);
draw(g);
}
}
/**以下是測試代碼*/
importjavax.swing.JFrame;
importjavax.swing.JLabel;
publicclassTest{
publicstaticvoidmain(String[]args){
JFrameframe=newJFrame();
frame.setBounds(200,200,400,400);
JLabellabel=newPentagram(frame.getSize().height/2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(label);
frame.setVisible(true);
}
}