java画图板java画板程序

java画图板  时间:2021-01-16  阅读:()

java小画板程序该怎么做,大部分教程到最后都没舍得给一个几十行代码的小例子

import java.awt.BorderLayout; //布局管理器的一种,一个面板分东南西北中五个区, 用于放置控间,这样GUI在放大缩小,移植的时候方便 import java.awt.Button; import java.awt.Color; import java.awt.Container;// 一般的 Abstract Window Toolkit(AWT) 容器对象是一个可包含其他 AWT 组件的组件 import java.awt.Graphics; //定义一个真正的工具,用来接受图形操作 import java.awt.Panel; // Panel 是最简单的容器类 import java.awt.event.ActionEvent; //知道如何对自身进行指派的事件的接口 import java.awt.event.ActionListener; //用于接收操作事件的侦听器接口 import java.awt.event.MouseAdapter; //接收鼠标事件的抽象适配器类 import java.awt.event.MouseEvent; //鼠标事件 import java.awt.event.MouseListener; //用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。

import java.awt.event.MouseMotionAdapter; //接收鼠标移动事件的适配器 import java.awt.event.MouseMotionListener; //用于接收组件上的鼠标移动事件的侦听器接口 import javax.swing.ButtonGroup; //此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域 import javax.swing.JFrame; //java.awt.Frame 的扩展版本,该版本添加了对 JFC/Swing 组件架构的支持 import javax.swing.JPanel; JPanel //是一般轻量级容器 import javax.swing.UIManager; //此类跟踪当前的外观及其默认设置 //import javax.swing.Component; //对数据和方法的简单封装 Public class ShapeMain extends JFrame implements ActionListener,MouseListener,MouseMotionListener{ int x,y,x1,y1,x2,y2,width,height; boolean isFirstPoint = true; //初始化开始画的是线 int drawType = PaintingGround.LINE; //初始化开始不是填充 boolean isFill = false; //添加控件 ButtonGroup btg = new ButtonGroup(); Button btLine = new Button("线"); Button btRectangle = new Button("矩形"); Button btRound = new Button("圆"); Button btEllipse = new Button("椭圆"); Button tbFillState = new Button("填充"); Button button3 = new Button("文本操作"); Button button2 = new Button("清除"); Button button1 = new Button("选择颜色"); Panel buttonPanel = new Panel(); PaintingGround paintingGround = new PaintingGround(); //Main Method public static void main(String[] args) { //设置显示外观 try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }catch(Exception e) { e.printStackTrace(); } new ShapeMain(); } //构造函数 public ShapeMain() { //控件添加到控件组中 // btg.add(btLine); // btg.add(btRectangle); // btg.add(btRound); // btg.add(btEllipse); buttonPanel.add(btLine); buttonPanel.add(btRectangle); buttonPanel.add(btRound); buttonPanel.add(btEllipse); buttonPanel.add(tbFillState); //设置容器及容器的整体布局 Container cp = this; cp.setLayout(new BorderLayout()); cp.add(BorderLayout.NORTH,buttonPanel); cp.add(BorderLayout.CENTER,paintingGround); //cp.add(BorderLayout.SOUTH,jf); //jf.setJMenuBar(mb); setLocation(300,150); setSize(600,480); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); //添加鼠标触发事件 paintingGround.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent evn) { isFirstPoint = true; } }); //对鼠标的输入进行判断并调用画图程序 paintingGround.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent evn) { if(isFirstPoint) { x1 = evn.getX(); y1 = evn.getY(); isFirstPoint = false; } else { x2 = evn.getX(); y2 = evn.getY(); switch(drawType) { case PaintingGround.LINE: //画线 paintingGround.drawLine(x1,y1,x2,y2); break; case PaintingGround.RECTANGLE: //画矫形 paintingGround.drawRect(x1,y1,x2-x1,y2-y1); break; case PaintingGround.ROUND: //画圆 //两点距离公式 int size = Math.abs((int)Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))); paintingGround.drawRound(x1,y1,size); break; case PaintingGround.ELLIPSE: //画椭圆 paintingGround.drawEllipse(x1,y1,x2-x1,y2-y1); break; default: break; }}}}); //各个控件的触发事件 btLine.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.LINE; }}); btRectangle.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.RECTANGLE; }}); btRound.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.ROUND; }}); btEllipse.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.ELLIPSE; }}); tbFillState.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { isFill = tbFillState.isShowing(); paintingGround.setFillState(isFill); }});} public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub } public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } } class PaintingGround extends JPanel { public static final int LINE = 1; public static final int RECTANGLE = 2; public static final int ROUND = 3; public static final int ELLIPSE = 4; private int x,y; private int x1,y1,x2,y2; private int width, height,size; private int drawType = 0; private boolean isFill = false; //构造函数 public PaintingGround() { setBackground(Color.black); } //判断是用实心还是空心的, public void paint(Graphics g) { super.paint(g); g.setColor(Color.white); if(isFill) { switch(drawType) { case LINE: g.drawLine(x1,y1,x2,y2); break; case RECTANGLE: g.fillRect(x,y,width,height); break; case ROUND: g.fillOval(x,y,size,size); break; case ELLIPSE: g.fillOval(x,y,width,height); break; default: break; }} else { switch(drawType) { case LINE: g.drawLine(x1,y1,x2,y2); break; case RECTANGLE: g.drawRect(x,y,width,height); break; case ROUND: g.drawOval(x,y,size,size); break; case ELLIPSE: g.drawOval(x,y,width,height); break; default: break; } } } public void drawLine(int x1, int y1, int x2,int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; drawType = LINE; repaint(); } //具体的实现方式 public void drawRect(int x,int y,int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; drawType = RECTANGLE; repaint(); } public void drawRound(int x,int y,int size) { this.x = x; this.y = y; this.size = size; drawType = ROUND; repaint(); } public void drawEllipse(int x,int y,int width,int height) { this.x = x; this.y = y; this.width = width; this.height = height; drawType = ELLIPSE; repaint(); } public void setFillState(boolean isFill) { this.isFill = isFill; } }//注:来自网络,不喜勿喷,若侵犯版权,请与我联系

JAVA实现简单的画图板

楼主写一个html,很容易把下面代码嵌入到applet,可以google一下实现, 还有copy自己不知道算不算复制。





-_-! -------------------------------------------------------------------- 楼主给你一个我的,直接保存成pb.java编译运行,就是你要的画图功能 ,可以参考一下 ____________________________________________________________________ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.awt.geom.*; import java.io.*; class Point implements Serializable { int x,y; Color col; int tool; int boarder; Point(int x, int y, Color col, int tool, int boarder) { this.x = x; this.y = y; this.col = col; this.tool = tool; this.boarder = boarder; } } class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener { int x = -1, y = -1; int con = 1;//画笔大小 int Econ = 5;//橡皮大小 int toolFlag = 0;//toolFlag:工具标记 //toolFlag工具对应表: //(0--画笔);(1--橡皮);(2--清除); //(3--直线);(4--圆);(5--矩形); Color c = new Color(0,0,0); //画笔颜色 BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细 Point cutflag = new Point(-1, -1, c, 6, con);//截断标志 Vector paintInfo = null;//点信息向量组 int n = 1; FileInputStream picIn = null; FileOutputStream picOut = null; ObjectInputStream VIn = null; ObjectOutputStream VOut = null; // *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/ Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choice ColChoice,SizeChoice,EraserChoice; Button colchooser; Label 颜色,大小B,大小E; //保存功能 Button openPic,savePic; FileDialog openPicture,savePicture; paintboard(String s) { super(s); addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /*各工具按钮及选择项*/ //颜色选择 ColChoice = new Choice(); ColChoice.add("black"); ColChoice.add("red"); ColChoice.add("blue"); ColChoice.add("green"); ColChoice.addItemListener(this); //画笔大小选择 SizeChoice = new Choice(); SizeChoice.add("1"); SizeChoice.add("3"); SizeChoice.add("5"); SizeChoice.add("7"); SizeChoice.add("9"); SizeChoice.addItemListener(this); //橡皮大小选择 EraserChoice = new Choice(); EraserChoice.add("5"); EraserChoice.add("9"); EraserChoice.add("13"); EraserChoice.add("17"); EraserChoice.addItemListener(this); //////////////////////////////////////////////////// toolPanel = new Panel(); clear = new Button("清除"); eraser = new Button("橡皮"); pen = new Button("画笔"); drLine = new Button("画直线"); drCircle = new Button("画圆形"); drRect = new Button("画矩形"); openPic = new Button("打开图画"); savePic = new Button("保存图画"); colchooser = new Button("显示调色板"); //各组件事件监听 clear.addActionListener(this); eraser.addActionListener(this); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this); openPic.addActionListener(this); savePic.addActionListener(this); colchooser.addActionListener(this); 颜色 = new Label("画笔颜色",Label.CENTER); 大小B = new Label("画笔大小",Label.CENTER); 大小E = new Label("橡皮大小",Label.CENTER); //面板添加组件 toolPanel.add(openPic); toolPanel.add(savePic); toolPanel.add(pen); toolPanel.add(drLine); toolPanel.add(drCircle); toolPanel.add(drRect); toolPanel.add(颜色); toolPanel.add(ColChoice); toolPanel.add(大小B); toolPanel.add(SizeChoice); toolPanel.add(colchooser); toolPanel.add(eraser); toolPanel.add(大小E); toolPanel.add(EraserChoice); toolPanel.add(clear); //工具面板到APPLET面板 add(toolPanel,BorderLayout.NORTH); setBounds(60,60,900,600); setVisible(true); validate(); //dialog for save and load openPicture = new FileDialog(this,"打开图画",FileDialog.LOAD); openPicture.setVisible(false); savePicture = new FileDialog(this,"保存图画",FileDialog.SAVE); savePicture.setVisible(false); openPicture.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { openPicture.setVisible(false); } }); savePicture.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { savePicture.setVisible(false); } }); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} }); } public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; Point p1,p2; n = paintInfo.size(); if(toolFlag==2) g.clearRect(0,0,getSize().width,getSize().height);//清除 for(int i=0; ijava 画图程序import java.awt.*; import javax.swing.*; public class Demo_01 extends JFrame{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Demo_01 d=new Demo_01(); } //创建画板 public Demo_01(){ //定义画板的大小 this.setSize(700,600); //可见性 this.setVisible(true); //退出画板 this.setDefaultCloseOperation(EXIT_ON_CLOSE); } //创建画笔 ——重写父类方法 public void paint (Graphics g){ super.paint(g); //设置画圆的画笔的颜色 g.setColor(Color.yellow); //画圆 g.drawOval(40, 40, 50, 50); //设置画矩形画笔的颜色 g.setColor(Color.blue); //画矩形 g.drawRect(40, 100, 80, 100); //设置直线的画笔的颜色 g.setColor(Color.red); //画直线 g.drawLine(160, 120, 300, 120); } }

用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画板程序

package draw; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.io.*; import java.util.*; import javax.swing.*; //the point //impress the info of one point,the x and y class OnePoint implements Serializable { int x; int y; int tool; Color c; int border; public OnePoint(int x,int y,int tool,,int border) { this.x=x; this.y=y; this.tool=tool; ; this.border=border; } public static void main(String[] args) { DrawingBoard oneBorder=new DrawingBoard(); } } class DrawingBoard extends Frame implements MouseListener,ItemListener,ActionListener,MouseMotionListener { Button pen,line,ellipse,rect,clear,colorboard,storebutton,openbutton; Choice sizechoice,colorchoice ; Label pensize, pencolor; Panel panel ; FileDialog storefile, openfile; FileInputStream filein; FileOutputStream fileout; ObjectInputStream objectin; ObjectOutputStream objectout; int mode=0; int flagtool=0; Color flagcolor; int border; BasicStroke size; private Point2D[] p=new Point2D[3];; OnePoint p1,p2; Vector<OnePoint> points=new Vector<OnePoint>(); public DrawingBoard() { pen=new Button("画笔"); line=new Button("直线"); ellipse=new Button("圆"); rect=new Button("矩形"); clear=new Button("清除"); colorboard=new Button("调色板"); storebutton=new Button("存储文件"); openbutton=new Button("打开文件"); pensize=new Label("画笔大小"); pencolor=new Label("画笔颜色"); storefile=new FileDialog(this,"存储文件",FileDialog.SAVE); storefile.setVisible(false); storefile.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ storefile.setVisible(false); } }); openfile=new FileDialog(this,"打开文件",FileDialog.LOAD); openfile.setVisible(false); openfile.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ openfile.setVisible(false); } }); sizechoice=new Choice(); sizechoice.add("1"); sizechoice.add("2"); sizechoice.add("4"); sizechoice.add("6"); sizechoice.add("8"); sizechoice.addItemListener(this); colorchoice=new Choice(); colorchoice.add("black"); colorchoice.add("red"); colorchoice.add("blue"); colorchoice.add("green"); colorchoice.addItemListener(this); pen.addActionListener(this); line.addActionListener(this); ellipse.addActionListener(this); rect.addActionListener(this); clear.addActionListener(this); colorboard.addActionListener(this); storebutton.addActionListener(this); openbutton.addActionListener(this); panel=new Panel(); panel.add(storebutton); panel.add(openbutton); panel.add(pen); panel.add(line); panel.add(ellipse); panel.add(rect); panel.add(clear); panel.add(sizechoice); panel.add(pensize); panel.add(colorchoice); panel.add(pencolor); panel.add(colorboard); add(panel,BorderLayout.NORTH); setBounds(100,100,700,600); setVisible(true); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); /** * 添加鼠标事件的监听器,否则,鼠标的移动和点击都将无法识别! * */ addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g) { Graphics2D g2d=(Graphics2D)g; if(flagtool==2) { //qing chu g.clearRect(0,0,getSize().width,getSize().height); } for(int i=0;i<points.size()-1;i++) { p1=(OnePoint)points.elementAt(i); p2=(OnePoint)points.elementAt(i+1); g2d.setColor(p1.c); //////////////需要使用Graphics2D从Graphics类中继承下来的方法 setColor()设置当前的颜色 size=new BasicStroke(p1.border,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); g2d.setStroke(size); if(p1.tool==p2.tool) { switch(p1.tool) { case 0: Line2D.Double line1=new Line2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line1); break; case 1: Line2D.Double line2=new Line2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line2); break; case 3: Ellipse2D.Double ellipse=new Ellipse2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(ellipse); break; case 4: Rectangle2D.Double rect=new Rectangle2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(rect); break; default: } } } } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) //鼠标点下时候,将当前的点信息记录 { mode=0; p[0]=e.getPoint(); OnePoint pp1=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); points.addElement(pp1); //repaint(); } public void mouseReleased(MouseEvent e) //鼠标松开时候,如果是画笔,则当前截断,是其余状态记下一枚点信息 { mode=1; if(flagtool==0) { points.addElement(new OnePoint(-1,-1,22,flagcolor,border)); } else { OnePoint pp2=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); points.addElement(pp2); points.add(new OnePoint(-1,-1,22,flagcolor,border)); } repaint(); } public void itemStateChanged(ItemEvent e) { if(e.getSource()==colorchoice) { String selected=colorchoice.getSelectedItem(); if(selected=="black"){flagcolor=new Color(0,0,0); } else if(selected=="red"){flagcolor=new Color(255,0,0); } else if(selected=="blue"){ flagcolor=new Color(0,0,255);} else if(selected=="green"){ flagcolor=new Color(0,255,0); } } else if(e.getSource()==sizechoice) { String selected=sizechoice.getSelectedItem(); if (selected=="1"){ border=1; } else if(selected=="2"){ border=2*2; } else if(selected=="4"){ border=4*2; } else if(selected=="6"){ border=6*2; } else if(selected=="8"){ border=8*2; } } } /*public void update(Graphics g) { //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ paint(g); } */ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==pen){flagtool=0; } else if(e.getSource()==line){ flagtool=1; } else if(e.getSource()==clear) { flagtool=2; points.removeAllElements(); repaint(); //此语要有,否则今生无法删除! } else if(e.getSource()==ellipse){ flagtool=3; } else if(e.getSource()==rect){ flagtool=4; } else if(e.getSource()==colorboard) { /* * 使用 javax.swing.×包中的 JColorChooser 类的静态方法showDialog(ponent,String title,Color color ), * 该方法的参数ponent是当前显示对话框的父框架,color是设置调色板初始的被选颜色 * * 该方法返回被选的颜色,类型为Color * */ Color color=JColorChooser.showDialog(this, "调色板",flagcolor); flagcolor=color; } else if(e.getSource()==openbutton) { openfile.setVisible(true); if(openfile.getFile()!=null) { int temp=flagtool; flagtool=2; repaint(); try{ points.removeAllElements(); File file=new File(openfile.getDirectory(),openfile.getFile()); filein=new FileInputStream(file); objectin=new ObjectInputStream(filein); points=(Vector)objectin.readObject(); objectin.close(); filein.close(); flagtool=temp; repaint(); } catch(Exception ee){ System.out.println(ee.toString()); } } } else if(e.getSource()==storebutton) { storefile.setVisible(true); if(storefile.getFile()!=null) { try { File file=new File(storefile.getDirectory(),storefile.getFile()); fileout=new FileOutputStream(file); objectout=new ObjectOutputStream(fileout); objectout.writeObject(points); objectout.close(); fileout.close(); repaint(); } catch (FileNotFoundException e1) { System.out.println(e1.toString()); e1.printStackTrace(); } catch (IOException ee) { System.out.println(ee.toString()); ee.printStackTrace(); } } } } public void mouseDragged(MouseEvent e) //鼠标拖动时候,//当且仅当 flagtool==0,或者表示为橡皮的时候 //才将拖动过程中涉及到的点全部记录下来,并且调用repain()方法,重画当前 // TODO Auto-generated method stub { if(flagtool==0) { OnePoint pp3=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); points.addElement(pp3); repaint(); } if(flagtool==1) { OnePoint pp3=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); repaint(); } } public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } }

RAKsmart裸机云/云服务器/VPS全场7折,独立服务器限量秒杀$30/月起

适逢中国农历新年,RAKsmart也发布了2月促销活动,裸机云、云服务器、VPS主机全场7折优惠,新用户注册送10美元,独立服务器每天限量秒杀最低30.62美元/月起,美国洛杉矶/圣何塞、日本、香港站群服务器大量补货,1-10Gbps大带宽、高IO等特色服务器抄底价格,机器可选大陆优化、国际BGP、精品网及CN2等线路,感兴趣的朋友可以持续关注下。裸机云新品7折,秒杀产品5台/天优惠码:Bare-...

Sharktech($49/月),10G端口 32GB内存,鲨鱼机房新用户赠送$50

Sharktech 鲨鱼机房商家我们是不是算比较熟悉的,因为有很多的服务商渠道的高防服务器都是拿他们家的机器然后部署高防VPS主机的,不过这几年Sharktech商家有自己直接销售云服务器产品,比如看到有新增公有云主机有促销活动,一般有人可能买回去自己搭建虚拟主机拆分销售的,有的也是自用的。有看到不少网友在分享到鲨鱼机房商家促销活动期间,有赠送开通公有云主机$50,可以购买最低配置的,$49/月的...

云基最高500G DDoS无视CC攻击(Yunbase),洛杉矶CN2GIA、国内外高防服务器

云基成立于2020年,目前主要提供高防海内外独立服务器用户,欢迎各类追求稳定和高防优质线路的用户。业务可选:洛杉矶CN2-GIA+高防(默认500G高防)、洛杉矶CN2-GIA(默认带50Gbps防御)、香港CN2-GIA高防(双向CN2GIA专线,突发带宽支持,15G-20G DDoS防御,无视CC)、国内高防服务器(广州移动、北京多线、石家庄BGP、保定联通、扬州BGP、厦门BGP、厦门电信、...

java画图板为你推荐
安装程序配置服务器失败sql server 2000 安装程序配置服务器失败手游运营手册和平精英打到王者有什么要求简体翻译成繁体帮忙把繁体翻译成简体打开网页出现错误为什么打不开网页,出错吴晓波频道买粉五大知识付费平台有哪些?自助建站自助建站哪个平台最好?ps抠图技巧ps抠图多种技巧,越详细越好,急~~~~~~~申请证书手机申请证书彩信中心移动的彩信中心是?主页是?收不到彩信,怎么设置?硬盘人电脑对人有多大辐射?
a2hosting 优惠码 godaddy支付宝 12u机柜尺寸 中国特价网 html空间 panel1 qingyun 服务器维护方案 129邮箱 泉州移动 电信虚拟主机 息壤代理 无限流量 监控服务器 服务器防火墙 双线空间 新疆服务器 开心online shuangshiyi 更多