2016-08-09 21 views
2

我做了一个使用套接字将绘图程序从一个画布传输到所有其他用户画布的程序。当我在不同的屏幕上测试我的程序时,我遇到了一个问题。在我的笔记本电脑上1366x768一切顺利,但从一个1920x1080屏幕笔记本电脑它不连续。如果我在1920x1080屏幕笔记本电脑上绘制东西,它会在我的1366x768屏幕上显示光滑,但是当我在1366x768上绘制某些东西时,它会发生我说的。我认为问题不在于连接,因为我试图将服务器放在两台笔记本电脑上(不是同时),并从大一台运行一次,从小一台运行一次。它与解决办法有关吗?我如何解决这个问题?Java套接字绘制程序

public void mousePressed(MouseEvent e) { 
    x=e.getX(); 
    y=e.getY(); 
} 

public void mouseDragged(MouseEvent e) { 
    x1=e.getX(); 
    y1=e.getY(); 
    gr=canvas.getGraphics(); 
    gr.drawLine(x, y, x1, y1); 
    if(x!=x1||y!=y1) 
    { 
     try { 
     PrintStream ps=new PrintStream(sc.getOutputStream()); 
     ps.println("!!##print"+" "+x+" "+" "+y+" "+x1+" "+y1); 
    } catch (IOException e1) { 

     e1.printStackTrace(); 
    } 
    } 
    x=x1; 
    y=y1; 
} 

这里是prints.Ignore System.out的函数,因为我用它们来验证一些东西。

else if(mes.charAt(0)=='!'&&mes.charAt(1)=='!'&&mes.charAt(2)=='#'&&mes.charAt(3)=='#'&& 
         mes.charAt(4)=='p'&&mes.charAt(5)=='r'&&mes.charAt(6)=='i'&&mes.charAt(7)=='n'&& 
         mes.charAt(8)=='t' 
         ) 
       { 
        System.out.println("am intrat la desenat"); 
        StringTokenizer tok=new StringTokenizer(mes); 
        String aii=tok.nextToken(); 
        ArrayList<Integer> numere=new ArrayList<Integer>(); 
        for(int i=0;i<4;i++) 
        { 
         numere.add(Integer.parseInt(tok.nextToken())); 
        } 
        Graphics gs=canvas.getGraphics(); 
        gs.drawLine(numere.get(0), numere.get(1), numere.get(2), numere.get(3)); 
       } 

编辑:这种情况发生的另一件事是,在较低的1920×1080的约束画布不appear.It好像我对这项决议小帆布,从1366×768

+0

你能提供一些代码,你发送/接收点和你如何绘制它? –

+0

如果你想要的东西说,我会把它 – User124235

+0

它不是从分辨率它是从网络 – User124235

回答

1

好吧,我画布想你应该做某种转变:

1.创建一个标准分辨率 比方说,1600 * 900的标准分辨率,那么你必须计算出屏幕的规模

2.计算比例因子
标准解析度= 1600个* 900个
用户资源= 1366×768
比例=(一千三百六十六分之一千六)和(768分之900)都等于接近的条数1.171所以这是你的规模“因素”

3.现在乘点 你所要做的就是乘点接下来的事情,从第2步协调与您因素的要点,然后把这些信息


你也可以做相反的事情! 也许最好是让标准分辨率的主持人创建会议的分辨率

我希望这个答案会给你一个额外的可能性,或者我给你一个新的方法。

+0

你确定它是从决议,而不是延迟在网络?我问这个,因为我无法弄清楚。 – User124235

+0

它不是来自resolution.i认为它来自networking.when即使在同一台PC上我连接4个或更多,我会得到不连续的lines.but但无论如何谢谢你的意见 – User124235