相关疑难解决方法(0)

用户如何在winforms中在运行时调整控件大小

说我有一个pictureBox.

现在我想要的是用户应该可以随意调整pictureBox的大小.但是我不知道如何开始这件事.我搜索了互联网,但信息很少.

任何人都可以至少指导我从哪里开始?

.net c# winforms

12
推荐指数
3
解决办法
2万
查看次数

在具有一些控件的窗体上绘制半透明叠加图像

在窗体上绘制半透明叠加图像,其中包含一些控件,使其所有子控件都可见,但不能单击它们.它应该像我们通过一些半透明的黑色镜子看到一些东西.

我尝试过使用透明控件.这是对该控件的Panel控件和绘图图像的子类,但是所有控件都是完全可见的.

c# overlay transparent

9
推荐指数
2
解决办法
2万
查看次数

如何在保持控件可见的同时为ac#表单添加透明度?

更新:我花了几天时间搞乱了透明度的东西.我今晚又开始搞砸了.我使用Hans Passant的解决方案得到了一个新结果: 新结果http://img3.imageshack.us/img3/4265/icontransp.jpg http://img3.imageshack.us/img3/4265/icontransp.jpg

Passant的解决方案确实解决了透明背景渐变的问题.但是,我仍然遇到问题,我的图标中的透明颜色与表单的BackColor混合.您可以在上图中看到图标各个部分周围的紫红色.

原始内容:

我已经在这几个小时了,而且我运气不好.我已经搞砸了Control.Region,Form.TransparencyKey,Form.Opacity以及其他一些带有一些时髦效果的随机事物.

最近我一直在尝试自定义我的桌面,并决定搞乱应用程序码头.在看到Mac Dock和一些第三方Windows实现提供的内容之后,我决定构建自己的.

最终我想继续使用Win32 API.目前我只想使用尽可能多的C#和.Net框架功能.

我想在这个应用程序中做一些事情:

  • 显示带有渐变背景的表单/菜单.
  • 允许表单/菜单具有透明度,同时保持图标不透明.
  • 显示包含透明背景的图标.
  • 菜单和图标应该能够接收与鼠标相关的事件(悬停,离开,点击,dragover,dragdrop和其他一些事件).

这就是我拍摄的效果: 期望的效果http://img207.imageshack.us/img207/5716/desired.jpg http://img207.imageshack.us/img207/5716/desired.jpg

此图像显示了我想要实现的视觉效果.这是我为一个名为Rainmeter的程序制作的皮肤.图像显示了皮肤后面的Notepad ++,其中一些皮肤文件在编辑器中打开.菜单是透明的,但图标保持不透明.

我的方法:

使用表单作为菜单似乎是我合乎逻辑的首选.我对事件有基本的了解.我不太确定如何创建自己的点击事件,因此表单可以使事件处理更容易.我考虑了一些图标选项.我决定使用PictureBoxes作为图标,因为它们可以保存图像并接收事件.

一旦我完成了菜单中所有结构逻辑的代码,我就开始玩它来尝试获得我想要的视觉效果.Form.Opacity影响了表单上所有内容的透明度.由于我希望图标完全不透明,所以我独自留下了这个属性.我尝试将BackColor设置为Color.Transparent,但这会产生错误.我玩了几个组合...... 组合效果http://img204.imageshack.us/img204/757/effectsi.jpg http://img204.imageshack.us/img204/757/effectsi.jpg

我使用Drawing2D.LinearGradientBrush将渐变绘制到位图中.然后将此位图放置为Form.BackgroundImage或PictureBox.Image.如果使用,PictureBox的大小将覆盖整个表单并发送到后面.

我注意到一些Form.BackgroundColor会与我的图标轮廓混在一起.图标沿边缘具有透明度,使外观更加平滑.由于图标正在拾取Form的BackgroundColor,这使我认为PictureBoxes在图标加载到表单时创建新图像.然后,当图像的半透明部分与表单后面的任何颜色合并时,它们将与Form的BackgroundColor合并.

白色桌面效果http://img838.imageshack.us/img838/8299/whitedesktop.jpg http://img838.imageshack.us/img838/8299/whitedesktop.jpg

在此图像中,即使Form的紫红色现在完全透明,您也可以看到图标中存在的紫红色.我忘了指出在每种情况下使用相同的绿色到黄色渐变,Alpha值为150.在渐变看起来不是绿色的图像中,这是因为透明颜色与紫红色背景混合.

我不确定从这里做什么.如果我能以某种方式使表单完全透明,我觉得我能得到我想要的东西.我也在想我可能只是绘制图标而不是使用PictureBoxes.那么问题是设置图标以接收鼠标事件.(我从未做过自己的事件,我认为它会涉及一些Win32 API调用.)

我可以用PictureBoxes做些什么来获得我想要的效果吗?无论哪种情况,我都会接受任何有关我正在努力实现的整体效果的想法或建议.

c# graphics transparency image winforms

7
推荐指数
2
解决办法
4962
查看次数

在C#中编写表单时无法查看设计器

我正在关注winforms的这个教程,到目前为止,教程正在编写表单而不使用工具箱.我相信它很快就会更深入地介绍工具箱.

在本教程之后,我在以下两段代码中进行了部分类:

第一档:

using System;
using System.Windows.Forms;

public class Numeric : System.Windows.Forms.TextBox
{
    public Numeric()
    {
    }
}

public partial class Exercise
{
    private Numeric txtbox;
    System.ComponentModel.Container components;
}
Run Code Online (Sandbox Code Playgroud)

第二档:

using System;
using System.Windows.Forms;

public partial class Exercise : Form
{
    private void InitializeComponent()
    {
        txtbox = new Numeric();
        Controls.Add(txtbox);
    }

    public Exercise()
    {
        InitializeComponent();
    }
}

public class program
{
    public static int Main()
    {
        Application.Run(new Exercise());
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我用F5运行代码时,一切看起来都很好:表单弹出文本框.

但出于某种原因,当我右键单击第二个文件并选择"视图设计器"时,我收到一条错误,上面写着"变量'txtbox'未声明或未被分配".我可以选择"忽略并继续",这会将我引导到一个没有文本框的表单.

为什么会这样?我知道有些人认为我应该使用工具箱,这可能是最明智的做法,但我仍然想知道为什么会这样.

.net c# windows-forms-designer visual-studio winforms

6
推荐指数
1
解决办法
9252
查看次数

虚拟键盘(类似 Swype 键盘)Windows 窗体应用程序 C#

我正在尝试使用 c# 在 Windows 窗体中创建一个类似 swype 的键盘

在此输入图像描述

我有两个问题:我无法重现手指滑动动作。b. 我无法识别不同按键下的字母。

对于第一个问题:

我使用了 Graphics 类和 Pen 类,并像这样使用它:

    bool draw;
    Graphics g;
    Pen p;
    int prevX;
    int prevY;

    private void Form1_Load(object sender, EventArgs e)
    {
        draw = false;
        g = CreateGraphics();
        p = new Pen(Color.Black, 2);
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        draw = true;
        prevX = e.X;
        prevY = e.Y;
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        draw = false;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

.net c# windows-forms-designer winforms

5
推荐指数
1
解决办法
1377
查看次数

托管 Windows 窗体设计器 - 在运行时序列化设计器并生成 C# 代码

我正在创建一个设计器表面并将控件加载到运行时。将控件反序列化/加载到运行时时遇到问题。

我尝试过的所有方法似乎都有某种类型的问题。

发行面临例如:

  • 控件仍然受设计时的约束
  • 并非所有属性都会反序列化所有属性,即嵌套属性。
  • 控件关联似乎确实遵循,即面板中的按钮将不再在面板中,即使加载后该属性仍然是父级。

我在 git 上创建了一个示例项目:Surface Designer Test

有主要的代码片段:

从设计时序列化

private void LoadRuntime(int type)
{
    var controls = surface.ComponentContainer.Components;
    SerializationStore data = (SerializationStore)surface.
        _designerSerializationService.Serialize(controls);
    MemoryStream ms = new MemoryStream();
    data.Save(ms);
    SaveData.Data = ms.ToArray();
    SaveData.LoadType = type;
    new RuntimeForm().Show();
}

public object Serialize(System.Collections.ICollection objects)
{
    ComponentSerializationService componentSerializationService = 
        _serviceProvider.GetService(typeof(ComponentSerializationService)) as 
        ComponentSerializationService;
    SerializationStore returnObject = null;
    using (SerializationStore serializationStore = 
        componentSerializationService.CreateStore())
    {
        foreach (object obj in objects)
        {
            if (obj is Control control)
            {
                componentSerializationService.SerializeAbsolute(serializationStore, obj);
            }
            returnObject …
Run Code Online (Sandbox Code Playgroud)

.net c# codedom windows-forms-designer winforms

3
推荐指数
1
解决办法
997
查看次数