ps画布设置为透明后,画板依然显示白色,怎么恢复透明格子?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ps画布设置为透明后,画板依然显示白色,怎么恢复透明格子?相关的知识,希望对你有一定的参考价值。

ps画布设置为透明后,画板依然显示白色,没有白色图层,为了确认这个疑问,把所有图层删除后,画板背景色依然是白色,但是画板属性里面是选择了透明,

首先,不可能把所有图层都删除的,肯定会留下一个图层,请确定留下的图层不是特殊的“背景”层。
然后,你可以在只剩下一个非“背景”层的情况下,随便用画笔 画几笔,然后导出带透明的PNG图片,然后再将此PNG图片用PS打开,放在另一张有内容的图片上,看看是否透明关系是否正常,若正常 那就只是显示的问题。
你打开菜单——编辑——首选项——透明度与色域
将其中的网格颜色,设为非自定义的任意一种,再看看是否正常
如果不正常,暂时我也不知道哪里出了问题。
参考技术A

可以试一试

追问

好像不行~~用的是2021的ps,依次打开了首选项-性能,有一行小字显示旧版合成功能已移除

参考技术B 最下面的那个最下面锁住的背景图层有没有隐藏起来,那个默认是白色但他其实是透明的。 参考技术C 图层前的小眼睛关掉追问

为了防止有图层没被隐藏,已经是删除了所有图层哦

DataGridView透明行选择和双击背景颜色更改

以下代码旨在在c#.net中设置DataGridView对象。它将填充对象并将“选定单元格”前/后颜色设置为透明。双击特定行时,如果未设置该行,则应将背景颜色更改为绿色。如果设置了该行,则应将背景颜色更改为白色。

出现两个问题:

1)最初突出显示数据网格的第一行。它不是透明的,而是纯白色的。单击其他行将解决此问题,下一个选定的行将是透明的。

2)执行双击时,数据网格不会将该行的背景更改为新颜色。除非选择另一行,否则它不会改变颜色。

我希望双击操作时背景颜色变化是即时的。

我还希望初始选定的行是透明的。

我的代码可以修复,还是有更好的方法来达到预期的效果。

下面是我的代码的简化摘录。

创建一个c#.net项目,空白表单。

创建DataGridView对象 - 不要通过属性页面设置任何参数。使用以下函数在表单构造函数中调用以设置表:

const int TotalDummyData = 20;

/// <summary>
/// 
/// </summary>
private void CreateDGV()
{
    dgv.Width = 420;
    dgv.Columns.Add("h1", "Name");
    dgv.Columns.Add("h2", "Value");
    dgv.Columns[0].Width = 200;
    dgv.Columns[1].Width = 200;
    dgv.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
    dgv.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
    dgv.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
    dgv.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;

    for (int i = 0; i < TotalDummyData; i++)
    {
        DataGridViewRow dgvRow = new DataGridViewRow();
        DataGridViewCell dgvCell1 = new DataGridViewTextBoxCell();
        DataGridViewCell dgvCell2 = new DataGridViewTextBoxCell();
        dgvCell1.Value = "dummy_data_name_" + i.ToString();
        dgvCell2.Value = "dummy_data_value_" + i.ToString();
        dgvRow.Cells.Add(dgvCell1);
        dgvRow.Cells.Add(dgvCell2);
        dgv.Rows.Add(dgvRow);
    }
    dgv.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
    dgv.ColumnHeadersDefaultCellStyle.Font = new Font("Arial", 12.0f, FontStyle.Bold);
    dgv.AllowUserToAddRows = false;
    dgv.AllowUserToDeleteRows = false;
    dgv.AllowUserToResizeColumns = false;
    dgv.AllowUserToResizeRows = false;
    dgv.ReadOnly = true;
    dgv.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
    dgv.RowHeadersVisible = false;
    dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    dgv.DefaultCellStyle.SelectionBackColor = Color.Transparent;
    dgv.DefaultCellStyle.SelectionForeColor = Color.Transparent;
    dgv.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgv_CellContentDoubleClick);
}

现在创建单元格双击功能 - 这将更改单元格背景颜色

bool[] DummyDataSet = new bool[20];

/// <summary>
/// 
/// </summary>
/// <param name ="sender"></param>
/// <param name ="e"></param>
private void dgv_CellContentDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
    if(!DummyDataSet[e.RowIndex])
    {
        DummyDataSet[e.RowIndex] = true;
        dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightGreen;
    }
    else
    {
        DummyDataSet[e.RowIndex] = false;
        dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
    }
}
答案

关于为什么它在你点击另一行后改变颜色的答案,问题是你双击一行后它仍然被选中,所以Color.Transparent的datagridview默认选择样式仍然适用,就像我说的那样,它不是真的无论如何,透明度。在事件处理程序中将默认单元格样式backcolor更改为绿色后,添加以下行:dgv.ClearSelection();然后在双击后立即将其着色。

编辑:解决问题1这个问题有点棘手,但是发生这种情况的原因是因为在绘制datagridview时它会将第一行或单元格或列设置为当前选择,具体取决于dgv选择模式。同样,因为您将选择样式设置为Color.Transparent的背面和前面颜色(实际上由于已经讨论过的原因,它实际上最终会变为白色),所以在绘制控件时会选择第一行,这就是为什么你得到全白的原因。遗憾的是,在绘制dgv之前,您无法在CreatedataGridView()方法中清除选择,您需要在绘制控件后清除选择。我通过在Form1()(或形式的Main())方法中添加两行来完成此操作:

public Form1()
    {
        InitializeComponent();
        CreatedataGridView1();

        //Force the form and its children to be drawn...
        this.Show();

        //Now clear the selection
        dataGridView1.ClearSelection();
    }
另一答案

如果您在Windows窗体中工作,我的理解是Windows窗体不支持真正的透明度。换句话说,如果您的数据网格视图后面有图像或某些内容,并且单元格是“透明的”,则它不会显示其后面的图像部分。相反,它从父容器的背景颜色继承其背景颜色。这是我的理解。我不熟悉WPF和透明度,但可能是其他人。此外,在您的双击事件处理程序中,您使用Color.White而不是Color.Transparent(但就像我上面解释的那样,Color.Transparent不是真正的透明度)。

此外,您应该尝试使用事件CellDoubleClick而不是CellContentDoubleClick。否则,用户必须单击单元格以“进入”内容,然后双击内容。

另一答案

我有同样的问题,但我想出了一个更简单的解决方案。只需将单元格的“SelectionBackColor”属性设置为与所需单元格背景颜色相同的颜色,将datagridview的焦点暂时移动到另一个单元格,然后将其设置回所考虑的单元格。这(我相信)允许所有更新和重新涂漆机器正常运行。这是我的双击事件处理程序

       private void dataGridView_Types_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        DataGridView view = (DataGridView)sender;

        if (view.Columns[e.ColumnIndex].Name == "TypeTable_Color")
        {
            ColorDialog dlg = new ColorDialog();
            DialogResult res = dlg.ShowDialog();
            if (res == DialogResult.OK)
            {
                DataGridViewCell cell = view[e.ColumnIndex, e.RowIndex];
                cell.Style.BackColor = dlg.Color;
                cell.Style.SelectionBackColor = dlg.Color;
                view.CurrentCell = view.FirstDisplayedCell; \temporarily move focus
                view.CurrentCell = view[e.ColumnIndex, e.RowIndex]; \put it back - this updates selectionbackcolor
            }
        }
    }

以上是关于ps画布设置为透明后,画板依然显示白色,怎么恢复透明格子?的主要内容,如果未能解决你的问题,请参考以下文章

photoshop 设置前背景的颜色为白色,如何将背景色指定为白色

ps置入嵌入对象为啥有白色背景色

如何用PS制作花型背景图

用PS怎么做透明亚克力板效果?

ps新建画布之后 有这种白框怎么去掉

Vegas7.0如何将插入的图片背景透明和移动?