我使用套接字绘制程序,将画布从画布传送到所有其他用户画布。当我在不同的屏幕上测试我的程序时,我遇到了一个问题。我的笔记本电脑1366x768一切顺利但是从1920x1080屏幕笔记本电脑上如果我在1920x1080屏幕笔记本电脑上画一些东西它在我的1366x768屏幕上显示顺畅,但是当我在1366x768上绘制一些东西时它就像我说的那样。我认为问题不在于连接,因为我试图把服务器放在两台笔记本电脑(不同时)从大一台笔记本电脑运行一次,从小笔记本电脑运行一次。它与解决方案有关吗?我怎么能解决这个问题?
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;
}
这里是print.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));
}
编辑:发生的另一件事是1920x1080画布的下限没有出现。看起来我在该分辨率上有一个小画布,画布来自1366x768
答案 0 :(得分:1)
好的我认为你应该进行某种转变:
<强> 1。制定标准分辨率
让我们说1600 * 900是标准分辨率,那么你必须计算屏幕的比例
的 2。计算比例因子
标准分辨率= 1600 * 900
用户res = 1366x768
比例=(1600/1366)和(900/768)都等于接近1.171的数字,这样你的比例&#34;因子&#34;
第3。现在乘以点
接下来你需要做的是将点,坐标点与步骤2中的因子相乘。然后发送此信息
您也可以这样做! 也许最好将标准分辨率作为创建会话的主机的分辨率
我希望这个答案会给你一个额外的可能性,或者我给你一个新的方法。