台灣最大程式設計社群網站
線上人數
1155
 
會員總數:243277
討論主題:188067
歡迎您免費加入會員
討論區列表 >> C# >> 想請問有無辦法將2個FillRectangle合併或相加成一個矩形;
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
想請問有無辦法將2個FillRectangle合併或相加成一個矩形;
價值 : 30 QP  點閱數:253 回應數:10

樓主

liping
門外漢
0 7
239 29
發送站內信

各位大大好:

想請問有無辦法將2個FillRectangle合併或相加成一個矩形;


//畫矩形圖

PointF RectangStart = new PointF(75, 270);

for (int i = 0; i < 12; i++)

{

if (i % 2 == 0)

{

objGraphis.FillRectangle(new SolidBrush(Color.Blue), RectangStart.X, 270 - 2 * arrValues[i], 25, arrValues[i] * 2);

objGraphis.DrawString(arrValues[i].ToString(), new Font("新細明體", 10), Brushes.Black, RectangStart.X + 10, 270 - arrValues[i] * 2 - 15);

}

else

{

objGraphis.FillRectangle(new SolidBrush(Color.Red), RectangStart.X, 270 - 2 * arrValues[i], 25, arrValues[i] * 2);//矩形的寬度為12.5和相應數值的高度

objGraphis.DrawString(arrValues[i].ToString(), new Font("新細明體", 10), Brushes.Black, RectangStart.X + 10, 270 - arrValues[i] * 2 - 15);

RectangStart.X += 50;

}

}



如下圖:將32+2 =34 才對?


搜尋相關Tags的文章: [ C# ] , [ FillRectangle ] ,
本篇文章發表於2018-05-22 23:58
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
如果要變34,就要將矩形的位置上移,下面一個高度2、上面一個高度32,合起來就變34了。
本篇文章回覆於2018-05-23 07:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

liping
檢舉此回應
小魚大大你好:

若矩形的位置是變動的,由資料塞進去所產生,也可以這樣使用嗎?煩請告知,謝謝。
本篇文章回覆於2018-05-23 09:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

春天
檢舉此回應
1. 位置若是指座標,座標有X跟Y,變動指的是X變動還是Y變動還是兩者皆變動? 問題要清楚
2. 變動的規則為何?
3. 正常來講套變數畫圖應該都能實現,含畫圖表的工具程式就能證明,如Excel
本篇文章回覆於2018-05-23 13:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

liping
檢舉此回應
春天大大 您好:
1.是X軸變動
2.X軸變動如下:

arrValues[i]目前先帶值,之後要改動態.
float[] arrValues = { 32.6f, 2.2f };
arrValues[0] = 32.6f;
arrValues[1] = 2.2f;

System.Drawing.Pen pen1 = new System.Drawing.Pen(Brushes.Black, 1);//設置畫筆的颜色粗细
objGraphis.DrawLine(pen1, 60, 270, 680, 270); //X軸
for (int i = 0; i <= 12; i++)
{
objGraphis.DrawLine(pen1, 60 + 50 * i, 265, 60 + 50 * i, 270);
}

//畫矩形圖

PointF RectangStart = new PointF(75, 270);

for (int i = 0; i < 12; i++)
{
if (i % 2 == 0)
{
objGraphis.FillRectangle(new SolidBrush(Color.Blue), RectangStart.X, 270 - 2 * arrValues[i], 25, arrValues[i] * 2);

objGraphis.DrawString(arrValues[i].ToString(), new Font("新細明體", 10), Brushes.Black, RectangStart.X + 10, 270 - arrValues[i] * 2 - 15);
}

else

{

objGraphis.FillRectangle(new SolidBrush(Color.Red), RectangStart.X, 270 - 2 * arrValues[i], 25, arrValues[i] * 2);//矩形的寬度為12.5和相應數值的高度

objGraphis.DrawString(arrValues[i].ToString(), new Font("新細明體", 10), Brushes.Black, RectangStart.X + 10, 270 - arrValues[i] * 2 - 15);

RectangStart.X += 50;

}

}
本篇文章回覆於2018-05-23 14:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

春天
檢舉此回應
所以你要把兩個矩形併成一個的意思是?
本篇文章回覆於2018-05-23 15:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

liping
檢舉此回應
藍色為Vendor,紅色為Buyer希望在圖表都能顯示出來(因為紅+藍為一組資料)
本篇文章回覆於2018-05-23 16:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
不錯的參考

春天
檢舉此回應
所以你貼的成果圖片,兩個矩形目前是疊在一起的?
其實我建議先處理好資料再來畫圖,在畫圖前就先把該在哪邊畫都算完了,再進到畫圖的流程
不要在畫圖時又要處理合併這件事
另外用1維陣列來裝座標資料也不是很理想...
本篇文章回覆於2018-05-23 16:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
最有價值解答

春天
檢舉此回應
資料庫讀取 => 整理資料,計算矩形位置 => 畫圖
本篇文章回覆於2018-05-23 16:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

liping
檢舉此回應
春天 大大 你好:
所以你貼的成果圖片,兩個矩形目前是疊在一起的? -->是的
謝謝你的意見,我先來弄資料再依你的方法試試看。感恩~^^
本篇文章回覆於2018-05-23 16:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

liping
檢舉此回應
春天大大 您好:
精算過計算矩形位置後,就可正常顯示感謝.

for (int i = 0; i < arrValues.Count; i++)
{
if (i % 2 == 0)
{
objGraphis.FillRectangle(new SolidBrush(Color.Blue), RectangStart.X, 270 - 2 * arrValues[i], 25, arrValues[i] * 2);//矩形的宽度为12.5和相应数值的高度
objGraphis.DrawString(arrValues[i].ToString(), new Font("新細明體", 10), Brushes.Black, RectangStart.X + 25, 300 - arrValues[i] * 2);
}
else
{
objGraphis.FillRectangle(new SolidBrush(Color.Red), RectangStart.X, (270 - 2 * arrValues[i-1]) - ( 2 * arrValues[i]), 25, arrValues[i] * 2);//矩形的宽度为12.5和相应数值的高度
objGraphis.DrawString(arrValues[i].ToString(), new Font("新細明體", 10), Brushes.Black, RectangStart.X + 25, (270 - 2 * arrValues[i - 1] - arrValues[i]));
RectangStart.X += 50;
}
}
本篇文章回覆於2018-05-25 11:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.