背景设置 - 裁剪选项

背景设置 - 裁剪选项

设置壁纸时,您可以选择飞涨中心规模充满或者跨度选项。它们是什么意思?

如何规模选项不同于飞涨跨度? 我看不出任何壁纸有什么区别。

答案1

要了解各种可用选项的复杂性,只需在源代码中稍微挖掘一下,看看每个选项会发生什么。我会尽力将其尽可能简单地表达出来,但要注意 - 您需要喜欢一点数学!

让我们获取源代码:

 apt-get source gnome-desktop3
 cd gnome-desktop*
 cd libgnome-desktop

现在用您最喜欢的文本编辑器打开以下源模块:

 gedit gnome-bg.c

有两个关键功能需要检查:

获取缩放的像素缓冲区

切换(放置){
    情况G_DESKTOP_BACKGROUND_STYLE_SPANNED:
                new = pixbuf_scale_to_fit (pixbuf,宽度,高度);
        休息;
    情况G_DESKTOP_BACKGROUND_STYLE_ZOOM:
        new = pixbuf_scale_to_min (pixbuf,宽度,高度);
        休息;

    情况G_DESKTOP_BACKGROUND_STYLE_STRETCHED:
        new = gdk_pixbuf_scale_simple (pixbuf, 宽度, 高度,
                           GDK_INTERP_BILINEAR);
        休息;

    情况G_DESKTOP_BACKGROUND_STYLE_SCALED:
        new = pixbuf_scale_to_fit (pixbuf,宽度,高度);
        休息;

    情况G_DESKTOP_BACKGROUND_STYLE_CENTERED:
    情况G_DESKTOP_BACKGROUND_STYLE_WALLPAPER:
    默认:
        new = pixbuf_clip_to_fit (pixbuf,宽度,高度);
        休息;
    }

和函数:

绘制图像区域

开关(bg->放置){
    情况G_DESKTOP_BACKGROUND_STYLE_WALLPAPER:
        pixbuf_tile(缩放,目标);
        休息;
    情况G_DESKTOP_BACKGROUND_STYLE_ZOOM:
    情况G_DESKTOP_BACKGROUND_STYLE_CENTERED:
    情况G_DESKTOP_BACKGROUND_STYLE_STRETCHED:
    情况G_DESKTOP_BACKGROUND_STYLE_SCALED:
        pixbuf_blend (缩放,目标,0,0,w,h,x + 区域->x,y + 区域->y,1.0);
        休息;
    情况G_DESKTOP_BACKGROUND_STYLE_SPANNED:
        pixbuf_blend (缩放,目标,0,0,w,h,x,y,1.0);
        休息;
    默认:
        g_assert_not_reached();
        休息;
    }

  • 让我们首先看一下选项跨度

这是由案例选项描述的G_DESKTOP_BACKGROUND_STYLE_SPANNED

首先将壁纸(pixbuf)缩放到要填充的区域(pixbuf_scale_to_fit),即采用原始壁纸并扩大其宽度和高度以匹配该区域。

它使用以下算法来扩展:

因子 = MIN (最大宽度/源宽度,最大高度/源高度);
新宽度 = floor(源宽度 * 因子 + 0.5);
新高度 = 地板(源高度 * 因子 + 0.5);

源码壁纸尺寸是宽度还是高度,而最大限度_面积尺寸是宽度还是高度

如您所见,这是一个相当复杂的算法,但基本上,它会尝试查看在以其计算出的相同因子线性缩放两个维度之前需要扩展的最小维度是多少。

该区域是您的一个或多个显示器的组合区域。

然后将生成的壁纸(pixbuf)与整个区域的桌面背景颜色混合。

  • 让我们看看这个选项规模

这是由案例选项描述的G_DESKTOP_BACKGROUND_STYLE_SCALED

正如你在源代码中看到的,它非常类似于跨度。它使用与缩放图片相同的算法跨度

然后将生成的壁纸(pixbuf)与视口区域的桌面背景颜色混合,即,不是所有显示器的组合区域,而是每个显示器的单独区域。

  • 让我们看看这个选项飞涨

这是由案例选项描述的G_DESKTOP_BACKGROUND_ZOOM

首先将壁纸(pixbuf)缩放到要填充的区域(pixbuf_scale_to_min),即采用原始壁纸并扩大其宽度和高度以匹配该区域。

它使用以下算法来扩展:

因子 = MAX (最小宽度/源宽度,最小高度/源高度);

新宽度 = floor(源宽度 * 因子 + 0.5);
新高度 = 地板(源高度 * 因子 + 0.5);

源码壁纸尺寸是宽度还是高度,而最大限度_面积尺寸是宽度还是高度*

请注意与前两个选项之间的细微差别 - 它计算需要扩展的最大维度,然后根据计算出的相同因子线性缩放两个维度。

然后将生成的壁纸(pixbuf)与视口区域的桌面背景颜色混合,即,不是所有显示器的组合区域,而是每个显示器的单独区域。

  • 让我们看看这个选项拉紧

这是由案例选项描述的G_DESKTOP_BACKGROUND_STRETCHED

壁纸(pixbuf)在宽度和高度上都扩展到该区域 - 因此,如果您的壁纸不是壁纸的精确尺寸,您可能会得到扭曲

然后将生成的壁纸(pixbuf)与视口区域的桌面背景颜色混合,即,不是所有显示器的组合区域,而是每个显示器的单独区域。

  • 让我们看看这个选项中心

这是由案例选项描述的G_DESKTOP_BACKGROUND_CENTRED

如果壁纸(pixbuf)太大而无法容纳该区域,则实际上会将其剪裁为适当的尺寸,即将宽度缩小到区域宽度,将高度缩小到区域高度。

然后将生成的壁纸 (pixbuf) 与桌面背景颜色混合,用于视口区域(即不是所有显示器的组合区域,而是每个显示器的单独区域)。然后将生成的图像绘制到显示器整个区域的中心。

  • 让我们看看这个选项

这是由案例选项描述的G_DESKTOP_BACKGROUND_WALLPAPER

壁纸(pixbuf)也同样被剪裁为中心选项。

然后将生成的壁纸 (pixbuf) 与桌面背景颜色混合,用于视口区域,即不是所有显示器的组合区域,而是每个显示器的单独区域。生成的图像从一个角落开始重复复制,用每个图像填充整个区域,即在宽度和高度上平铺。

答案2

这可能很难看出,但是...

  • 平铺 - 平铺图像,就像地板上的瓷砖一样,尝试使用非常小的图像,例如 100x100。参见示例
  • 缩放 - 缩放图像,使最大尺寸现在成为桌面的最大尺寸。例如,800x600 桌面上的 200x100 图像将缩放至 800x400,留下 200px 的空白空间。
  • 填充 - 基本上“缩放”到显示器的宽度。忽略高度。因此,如果您有 1000x1000 分辨率和 600x500 图像,则图像将缩放到 1200x1000 并居中,稍微切掉顶部和底部。
  • 跨度 - 与比例类似,但跨多个显示器。因此,如果您有 2 个 800x600 和一个 1600x600 图像,则可以将其“跨”到两个显示器
  • 中心 - 适用于尺寸较小的图像(尽管较大的图像也可以),将图像放置在单个显示器的中心。
  • 缩放 - “调整”图像大小。使其与桌面大小完全相同。因此,800x600 的桌面会将 900x200 的图像“缩放”为 800x600,并且失真是可以忽略的。

抱歉,除了平铺图之外我无法提供其他样本,但图像很大程度上取决于您的显示器。如果您使用尺寸严重偏小且纵横比较差的图像进行测试,您应该能够轻松看到选项的效果。

答案3

根据我对多幅图像的观察:

  • 中心 :将图像置于桌面的中心,保持其原始大小。
  • 平铺:平铺图像,就像地板上的瓷砖一样,保持图像的原始大小。
  • 填充:拉伸(或缩小)图像以匹配屏幕,但不关心保持比例。
  • 缩放:拉伸(或缩小)图像,保持比例,使背景完全填充。当图像和屏幕的比例不同时,它将切断无法容纳的多余带(顶部和底部或左侧和右侧,具体取决于图像)。
  • 缩放:也会拉伸(或缩小)图像,保持比例,但确保图像完全适合屏幕区域。当图像和屏幕的比例不同时,它会允许两侧有空白带(同样,顶部和底部或左侧和右侧,具体取决于图像)。
  • Span :不知道。看起来像是 Scale。我想 Coteyr 的说法是对的,它的作用与 Scale 相同,但适用于多个屏幕。

相关内容