gpt4 book ai didi

Java 套接字绘制程序

转载 作者:行者123 更新时间:2023-11-30 10:40:34 24 4
gpt4 key购买 nike

我制作了一个绘画程序,使用套接字将点从 Canvas 传输到所有其他用户 Canvas 。当我在不同的屏幕上测试我的程序时,我遇到了一个问题。在我的笔记本电脑 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;
}

这是打印的函数。忽略 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 Canvas 的下限没有出现。看起来我在那个分辨率上有一个小 Canvas ,1366x768 的 Canvas

最佳答案

好的,我认为您应该进行某种转换:

<强>1。制定标准决议假设1600*900是标准分辨率,那你就得计算屏幕的比例

<强>2。计算比例因子
标准分辨率 = 1600*900
用户分辨率 = 1366x768
比例 = (1600/1366) 和 (900/768) 都等于接近 1.171 的数字,所以这是你的比例“因子”

<强>3。现在乘以积分接下来您要做的是将点、点的坐标与步骤 2 中的因子相乘。然后发送此信息


你也可以反其道而行之!也许将标准分辨率设置为创建 session 的主机的分辨率会更好

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

关于Java 套接字绘制程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38850341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com