2012-05-25 18 views
-1

我正在編寫一個類似DrawSomething的程序。但我不知道如何轉移顏色的拉伸屬性。使用C中的套接字進行顏色傳輸#

我有一個繪製客戶端和一個猜測客戶端。當繪製客戶端改變筆顏色時,如何通知猜測客戶端並以新顏色繪製圖表。

我想知道客戶端或窗體有關如何使用套接字和傳輸,字符串或RGB中的顏色類型來讀取新顏色?

我正在使用此代碼。我認爲它是字符串,然後我可以使用ptp協議進行傳輸,並將顯示在客戶端的另一端(猜測客戶端)。

public Color _drawPenColor = Color.Red; 
    public int _drawPenWidth = 10;   
    ClientSendPtPPacket("DRAW-" + e.X.ToString() + "-" + e.Y.ToString() + "-" 
           + _drawPenWidth.ToString() + "-" 
           + _drawPenColor.ToString(), 
           opponentIP, opponentPort); 

我已經得到了包和數據包中的所述一個是 「繪圖-150-234(現在的位置)-10(寬度) - 彩色[紅色]」。

如果我使用調色板來改變顏色,那將是「Draw-150-234-10-Color [A = 255,R = 45,G = 28,B = 45]」。 IP和端口被忽略。

所以我的問題是如何獲得一種新的顏色。

PS:ClientSendPtPPacket類

private void ClientSendPtPPacket(string content, IPAddress toIp, int toPort) 
    { 
     try 
     { 
      if (_socketClient != null && _socketClient.Connected == true) 
      { 
       string sendPacket = _localIP.ToString() + "-" + _localPort.ToString() + "-" + 
        toIp.ToString() + "-" + toPort.ToString() + "-" + content; 
       Byte[] bytePacket = System.Text.Encoding.UTF8.GetBytes(sendPacket); 
       _socketClient.Send(bytePacket); 
      } 

     } 
     catch (Exception excep) 
     { 

     } 
    } 
+0

你的問題還不清楚。 「所以我的問題是如何獲得新的顏色。」 ?事實上,如果您對顏色處理有疑問,爲什麼要將與網絡相關的代碼? –

+0

我有一個繪製客戶端和一個猜測客戶端。當繪製客戶端改變筆顏色時,如何通知猜測客戶端並以新顏色繪製圖表。 – MindHacks

+0

你的意思是與代碼相關的網絡是無用的。我想是這樣。但是,我用它來向您介紹如何傳輸顏色代碼。準確地說,我想知道客戶端或者有關如何使用套接字讀取新顏色以及傳輸,字符串或RGB中的顏色類型的表單? – MindHacks

回答

0

我已經自己解決了這個問題。我用toAgrb()FromAgrb()方法。

ToArgb()用於顯示顏色的數量,而FromArgb()用於獲取顏色的數量。因此,我的猜測客戶端會知道繪製客戶端使用的顏色,即使繪製客戶端也改變了它的顏色。

但我可以在字符串類型中使用ToAgrb()和FromArgb()。

我的例子是:

 public Color ColorChange(string _color) 
    { 
     Color _newColor = new Color(); 
     switch (_color) 
     { 
      case "Red": _newColor = Color.FromArgb(Color.Red.ToArgb()); break; 
      case "Orange": _newColor = Color.FromArgb(Color.Red.ToArgb()); break; 
      case "Yellow": _newColor = Color.FromArgb(Color.Yellow.ToArgb()); break; 
      case "GreenYellow": _newColor = Color.FromArgb(Color.GreenYellow.ToArgb()); break; 
      case "DeepSkyBlue": _newColor = Color.FromArgb(Color.DeepSkyBlue.ToArgb()); break; 
      case "DarkBlue": _newColor = Color.FromArgb(Color.DarkBlue.ToArgb()); break; 
      case "Purple": _newColor = Color.FromArgb(Color.Purple.ToArgb()); break; 
      case "Black": _newColor = Color.FromArgb(Color.Black.ToArgb()); break; 
      case "Gray": _newColor = Color.FromArgb(Color.Gray.ToArgb()); break; 
      case "White": _newColor = Color.FromArgb(Color.White.ToArgb()); break; 
     } 
     return _newColor; 
    } 
+0

http://msdn.microsoft.com/en-us/library/system.drawing.color.fromname.aspx – Blorgbeard

+0

您可以用'Color _newColor = Color.FromName(_color);' – Blorgbeard

+0

Great!替換整個方法! ........ – MindHacks

相關問題