2015-10-21 86 views
1

我有一个包含许多选项卡的ajax选项卡容器。我想遍历每个选项卡并将选项卡面板内容绘制为位图。如何将AjaxControlToolkit TabPanel绘制到位图

这是我当前的代码:

foreach (object obj in container.Controls) 
      { 
       if (obj is AjaxControlToolkit.TabPanel) 
       { 
        AjaxControlToolkit.TabPanel tabPanel = (AjaxControlToolkit.TabPanel)obj; 

        Bitmap m_Bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); 

        Graphics graphics = Graphics.FromImage(m_Bitmap as System.Drawing.Image); 
        graphics.CopyFromScreen(25, 25, 25, 25, m_Bitmap.Size); 

        m_Bitmap.Save(@"C:\Users\user\Desktop\Project\Project1\Source Code\Project1\Image\" + tabPanel.HeaderText + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 
       } 
      } 

现在我能够循环thorugh在该选项卡容器中的每个选项卡面板和屏幕截图整个网页,然后保存在映像文件夹的位图图像。但我想截图/位图只是标签面板的内容。

问题:如何使用我当前的代码将AjaxControlToolkit TabPanel绘制到位图?

请指导我,谢谢。

回答

1
  1. 从客户端代码获取TabPanel。这是示例代码:
var tabContainer = $find("Content_DemoContent_Tabs"); 
for(var i = 0; i < tabContainer.get_tabs().length; i++) 
{ 
    tabContainer.set_activeTabIndex(i); 
    var element = tabContainer.get_tabs()[i]._element; 
} 
  • 计算每个element的屏幕坐标位置。这是相当复杂和不可靠的任务,但你可以看到如何在这里:https://stackoverflow.com/a/21274679/644496
  • 发送这个数据到服务器做一个屏幕截图。这是广泛的,虽然是众所周知的任务,所以你可以选择任何方式。