예제 #1
0
        private void PBox_DataRate_Paint(object sender, PaintEventArgs e)
        {
            /* 最大レート走査 */
            ulong rate_max = 1000;

            for (var index = 0; index < send_data_rate_buffer_.Length; index++)
            {
                if (rate_max < send_data_rate_buffer_[index])
                {
                    rate_max = send_data_rate_buffer_[index];
                }
                if (rate_max < recv_data_rate_buffer_[index])
                {
                    rate_max = recv_data_rate_buffer_[index];
                }
            }

            /* グラフ上限値を最大レートの1.2倍とする */
            rate_max += rate_max / 10 * 2;

            /* 表示ポイント生成 */
            var send_rate_points = new Point[send_data_rate_buffer_.Length];
            var recv_rate_points = new Point[recv_data_rate_buffer_.Length];
            var data_offset      = data_rate_in_;

            for (var data_count = 0; data_count < send_data_rate_buffer_.Length; data_count++)
            {
                send_rate_points[data_count].X = DATA_RATE_GRAPH_REGION.Left + data_count;
                send_rate_points[data_count].Y = DATA_RATE_GRAPH_REGION.Bottom - (int)(send_data_rate_buffer_[data_offset] * (ulong)DATA_RATE_GRAPH_REGION.Height / rate_max);

                recv_rate_points[data_count].X = send_rate_points[data_count].X;
                recv_rate_points[data_count].Y = DATA_RATE_GRAPH_REGION.Bottom - (int)(recv_data_rate_buffer_[data_offset] * (ulong)DATA_RATE_GRAPH_REGION.Height / rate_max);

                data_offset++;
                data_offset %= send_data_rate_buffer_.Length;
            }

            e.Graphics.DrawLines(SEND_DATA_RATE_GRAPH_PEN, send_rate_points);
            e.Graphics.DrawLines(RECV_DATA_RATE_GRAPH_PEN, recv_rate_points);

            /* テキスト */
            e.Graphics.DrawString(
                String.Format(
                    "Send: {0,7}B/s\nRecv: {1,7}B/s",
                    TextUtil.DecToText(send_data_rate_latest_),
                    TextUtil.DecToText(recv_data_rate_latest_)
                    ),
                DATA_RATE_FONT,
                DATA_RATE_FONT_BRUSH,
                (sender as Control).ClientRectangle,
                DATA_RATE_FONT_FORMAT);
        }
예제 #2
0
        public void SetFormStatus(FormStatus status)
        {
            if (InvokeRequired)
            {
                BeginInvoke(new SetFormStatusHandler(SetFormStatus), status);
                return;
            }

            SetStatusText(status.MainStatusBar_Text);
            SetProgressBar(status.MainProgressBar_Visible, status.MainProgressBar_Value, 100);

            /* ステータスバーのカウンターを更新 */
            DDBtn_DataRate.Text       = String.Format("Rate: {0,7}B/s", TextUtil.DecToText(status.PacketBytePSec_All));
            Label_PktCount_Cache.Text = String.Format("Cache: {0,9}", status.PacketCount_Cache);
            Label_PktCount_Raw.Text   = String.Format("Raw: {0,9}", status.PacketCount_Raw);
            Label_PktCount_View.Text  = String.Format("View: {0,9}", status.PacketCount_DrawAll);
            Label_PktCount_Busy.Text  = String.Format("Busy: {0,9}", status.PacketCount_DrawBusy);

            /* 変換器のカウンターを更新 */
            Panel_Center.UpdatePacketConverterView();
        }