【求助】在TabControl上画图 结果只有图,控件显示不出来了

ATiS_DXT ATiS_DXT 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Tab Control要鼠标点击到才显示 求解决方法
代码如下:
// RainDropDlg.cpp : implementation file
//

#include "stdafx.h"
#include "RainDropDlg.h"
#include "afxdialogex.h"


// CRainDropDlg dialog

IMPLEMENT_DYNAMIC(CRainDropDlg, CDialogEx)

CRainDropDlg::CRainDropDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CRainDropDlg::IDD, pParent)
{

}

CRainDropDlg::~CRainDropDlg()
{
}

void CRainDropDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB_CHANNEL, m_ChannelTab);
}


BEGIN_MESSAGE_MAP(CRainDropDlg, CDialogEx)
ON_WM_PAINT()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_CHANNEL, &CRainDropDlg::OnTcnSelchangeTabChannel)
END_MESSAGE_MAP()


// CRainDropDlg message handlers
BOOL CRainDropDlg::OnInitDialog()
{
CDialog::OnInitDialog();
int i;
for (i = 0; i < m_pChannel.GetCount(); i++)
{
m_ChannelTab.InsertItem(i, m_pChannel[i]->m_strChannelName);
}
return TRUE;
}

void CRainDropDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
// TODO: Add your message handler code here
CRect TabRect;
m_ChannelTab.GetClientRect(TabRect);
m_ChannelTab.AdjustRect(FALSE, TabRect);
TabRect.bottom = TabRect.bottom - 20;
CDC *cdc;
cdc=m_ChannelTab.GetDC();
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(255, 125, 0));
cdc->SelectObject(&pen);
cdc->MoveTo(20, 40);
cdc->LineTo(20, TabRect.bottom);
cdc->LineTo((int)(TabRect.right*0.5 - 20), TabRect.bottom);
DrawXAxis(cdc, TabRect);
DrawBarGraph(cdc, TabRect);
ReleaseDC(cdc);
// Do not call CDialogEx::OnPaint() for painting messages
}

void CRainDropDlg::DrawXAxis(CDC *pDC,CRect rect)
{
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(125, 125, 125));
pDC->SelectObject(pen);
int i,deltaX,perBlockLength;//deltaX 每个柱状图相差X轴长度
int nCh = m_ChannelTab.GetCurSel();
deltaX = (rect.Width()*0.5 - 90) / m_pChannel[nCh]->m_pRainDropChart[1]->m_nBlocks;
perBlockLength = deltaX-5;
//刻度
for (i = 0; i <= m_pChannel[nCh]->m_pRainDropChart[1]->m_nBlocks; i = i++)
{
pDC->MoveTo(25 + deltaX*i, rect.bottom);
pDC->LineTo(25 + deltaX*i, rect.bottom - 2);
pDC->MoveTo(25 + deltaX*i + perBlockLength, rect.bottom);
pDC->LineTo(25 + deltaX*i + perBlockLength, rect.bottom - 2);
}
}

void CRainDropDlg::DrawBarGraph(CDC *pDC,CRect rect)
{
int i, deltaX, perBlockLength;//deltaX 每个柱状图相差X轴长度
int nChIdx = m_ChannelTab.GetCurSel();
deltaX = (rect.Width()*0.5 - 90) / m_pChannel[nChIdx]->m_pRainDropChart[1]->m_nBlocks;
perBlockLength = deltaX - 5;
for (i = 0; i <= m_pChannel[nChIdx]->m_pRainDropChart[1]->m_nBlocks; i = i++)
{
pDC->MoveTo(25 + deltaX*i, rect.bottom);
pDC->LineTo(25 + deltaX*i, rect.bottom - m_pChannel[nChIdx]->m_pRainDropChart[1]->m_pBlock[i]->m_nCycles);
pDC->LineTo(25 + deltaX*i + perBlockLength, rect.bottom - m_pChannel[nChIdx]->m_pRainDropChart[1]->m_pBlock[i]->m_nCycles);
pDC->LineTo(25 + deltaX*i + perBlockLength, rect.bottom);
}
}

...全文

相关推荐

C# TabControl控件美化

C#TabControl TabControl控件美化 C#控件美化

小草旁的大树

C# 利用TabControl控件制作多窗口切换

5、将如下代码复制粘贴到form的load事件中,其中 tabControl1、tabPage1 改为自己的 tabControl 控件名字 (甚至可以直接只进行这一步)修改: this.tabControl1 = new System.Windows.Forms.TabControl();tabControl1.SelectedIndex 可以获取选中的TabPage对象的索引号。tabControl1.SelectedTab.Text.ToString()选项卡的名字。

大文梅

WPF TabControl控件的详细使用教程

WPF 中的 TabControl 是用于显示多个选项卡内容的控件,每个选项卡可以显示不同的内容。它适合用于需要组织多块内容并允许用户在它们之间切换的场景。

生命不息-学无止境

C#选项卡TabControl控件隐藏指定选项卡的办法,任意不支持隐藏属性的实现办法详解

C#选项卡TabControl控件隐藏执行选项卡的办法 如下图窗体: 如果我们想要隐藏tabPage1的话,我们该怎么做。 首先,tabControl控件由若干个tabPage成员组成。而这些tabPage成员的属性中并没有visable属性来控制它是否隐藏,那么怎么来实现隐藏呢? 首先,打开From的代码生成器: 翻到最下面我们可以看到如下几行代码。 这说明了tabPage实际上是个类。那...

夏威夷紫菜

C#窗体TabControl控件美化版源代码TabControlEx

话不多说,C#窗体TabControl控件美化版源代码TabControlEx,就是美化标签页,大家可以下载下来看看。新手可以学习学习,老鸟飘过吧

thresh0ld
评论 12
收藏 已收藏
分享
返回顶部
ATiS_DXT
界面 15,976 成员 115,866 内容