| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1404 人关注过本帖
标题:求助:如果实现自动Size(wide, height)
只看楼主 加入收藏
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
结帖率:97.26%
收藏
已结贴  问题点数:20 回复次数:7 
求助:如果实现自动Size(wide, height)
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册

求助:如果实现自动Size(wide, height)
这个图“宽”显示不全,“高”漏出了背景色。。。。

checkBox和 button放在1行3列的tableLayoutPanel1中
tableLayoutPanel1设置为底部停靠。。。。

 pictureBox1放在只有一个单元格的tableLayoutPanel2中
tableLayoutPanel2 的Dock设置为FILL

checkBox1、 button1、 button2、pictureBox1的Dock全设置为FILL。
这样,鼠标拖动窗口大小时,每个控件的Piont和Size都会相应的变化。。。。


在截图时,如何适应图片大小自动调整窗口大小。。。

图片附件: 游客没有浏览图片的权限,请 登录注册


代码中,screenImage 为截取到的图片。。。
搜索更多相关主题的帖子: 大小 窗口 Size 自动 图片 
2022-06-09 00:29
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


问题升级:
if (screenImage != nullptr)
{
    //窗口Size(322, 374)  图片框Size(300, 278)
    this->Width = screenImage->Width + (322 - 300);
    this->Height = screenImage->Height + (374 - 278);
    this->pictureBox1->Image = screenImage;
}
以上代码,可以让窗口自动改变尺寸。。。
新的问题就来了,
问题1、如何防止窗口尺寸超出屏幕。

int swidth = Screen::PrimaryScreen->Bounds.Width;
int sheight = Screen::PrimaryScreen->Bounds.Height;

以上代码,可以获取最大显示尺寸。。。
宽可以直接使用,但是高需要减去任务栏的高度,如何获取任务栏的高度。。。。。

问题2、尺寸超过,限制尺寸后如何在窗口上添加,水平/垂直滚动条。。。。
2022-06-09 11:53
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


为什么,都不回答我的问题呀???
再不回答,这个项目就完成了。
就没有机会再回答,这个项目的问题了。
if (screenImage != nullptr)
{
    this->WindowState = FormWindowState::Maximized;
    int swidth = this->Width;
    int sheight = this->Height;
    //默认窗口Size(322, 374)  默认图片框Size(300, 278)
    this->Width = (screenImage->Width + (322 - 300)< swidth) ? screenImage->Width + (322 - 300) : swidth;
    this->Height = (screenImage->Height + (374 - 278)< sheight) ? screenImage->Height + (374 - 278) : sheight;
    this->pictureBox1->Image = screenImage;
}
让窗口自动改变尺寸、防止窗口超出屏幕,已经完成了。。。。
最后问题,尺寸超出,限制窗口尺寸后,如何添加水平/垂直滚动条。。。。
2022-06-10 11:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
为什么,都不回答我的问题呀???
因为这不是C++,这是该死的C++/CLI。
2022-06-10 12:23
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
回复 4楼 rjsp
CLR如果该死,MFC岂不是更该死吗!!!!
CLR比MFC好用多了!!!!
MFC界面设计麻烦死!!!!
MFC更该死
2022-06-10 15:30
op123
Rank: 6Rank: 6
等 级:贵宾
威 望:21
帖 子:170
专家分:461
注 册:2022-6-4
收藏
得分:7 
有一个BUG,就是每次你调整完后,结果会小几圈!!!
2022-06-10 21:40
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
回复 6楼 op123
又见鬼了,当时调试程序时一切正常。保存里第二天打开运行,窗口一直是最大化。
    this->Width = (screenImage->Width + (322 - 300)< swidth) ? screenImage->Width + (322 - 300) : swidth;
    this->Height = (screenImage->Height + (374 - 278)< sheight) ? screenImage->Height + (374 - 278) : sheight;

尺寸的第二次赋值没有任何效果。
需要,取消最大化,并且计算去加载窅口的坐标。。。
TMD,调试好好的,第二天就变了。。。
真TMD是狗改不了吃屎,难缠的小鬼。。。。

[此贴子已经被作者于2022-6-11 06:58编辑过]

2022-06-11 06:52
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
回复 6楼 op123
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
    backImage = nullptr;
    extern bool loop;
    loop = false;
    hidden = false;
    if (screenImage != nullptr)
    {
        this->WindowState = FormWindowState::Maximized;  //窗口最大化
        int swidth = this->Width;        //获取窗口最大宽度
        int sheight = this->Height;        //获取窗口最大高度
        int Point_x;                    //Point_x  Point_y计算加载窗口坐标
        int Point_y;
        this->WindowState = FormWindowState::Normal;  //取消窗口最大化
        //默认窗口Size(322, 374)  默认图片框Size(300, 278)
        if (screenImage->Width + (322 - 300) < swidth)
        {
            this->Width = screenImage->Width + (322 - 300);
            Point_x = (swidth - (screenImage->Width + (322 - 300))) / 2;
        }
        else
        {
            this->Width = swidth;
            Point_x = 0;
        }
        if(screenImage->Height + (374 - 278) < sheight)
        {
            this->Height = screenImage->Height + (374 - 278);
            Point_y = (sheight-(screenImage->Height + (374 - 278)))/2;
        }
        else
        {
            this->Height = sheight;
            Point_y = 0;
        }
        this->Location = System::Drawing::Point(Point_x, Point_y);
        this->pictureBox1->Image = screenImage;
    }
}

这次,没问题了。。。
Size没问题,Point没问题。
就差Size超出,限制Size以后。如何添加滚动条了。。。
2022-06-11 08:15
快速回复:求助:如果实现自动Size(wide, height)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021022 second(s), 12 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved