{A}
CodeProject上的文章系列是基于一系列我首先对我的公布的职位。
在这篇文章中,我们将回顾色带框架的图像术语,看看如何在您的WinForms应用程序设置的静态和动态图像。
MSDN上的更多细节,可以发现在。大图像与小图片
许多ribbon控件允许您指定的图像。例如:按钮,组合框和微调。
这些控件有两个属性,一个大的图像和小。功能区的框架将这些大小选择之一,根据屏幕的可用空间和组缩放您的定义。
大图通常是32x32像素的小图片大小通常大小为16x16像素。
我说通常,因为这可以改变。实际图像大小应取决于你所选择的分辨率和DPI设置。微软推荐的图像尺寸如下:新闻部小图片大图96 DPI16x16像素32x32像素120 DPI20X20像素40X40像素
144 DPI24x24像素48x48像素192 DPI
32x32像素64x64像素
色带控制的图像通过LargeImage和SmallImage属性暴露。高对比度模式
高对比度是有视力障碍的人设计的Windows辅助功能。可以打开/关闭按下左ALT左SHIFT PRINT SCREEN。
模式的主要作用是改变系统颜色,使附近的颜色有高对比度。
现在,以支持在您的应用程序的高对比度模式,色带框架暴露了两个额外的属性:LargeHighContrastImage和SmallHighContrastImage允许您设置这种模式下的图像。下面是一个如何应用程序通常是在高对比度模式的例子:
图像静态
所以我们已经提到,我们有4图像属性:LargeImage,SmallImage,LargeHighContrastImage和SmallHighContrastImage。图像的大小取决于当前的系统设置。因此,我们需要一种方法来提供这些方案的应用程序不同的图像。那就是:<Command Name="cmdCut" Id="1008" LabelTitle="Cut">
<Command.LargeImages>
<Image Source="res/CutLargeImage32.bmp" MinDPI="96" />
<Image Source="res/CutLargeImage40.bmp" MinDPI="120" />
<Image Source="res/CutLargeImage48.bmp" MinDPI="144" />
<Image Source="res/CutLargeImage64.bmp" MinDPI="192" />
</Command.LargeImages>
<Command.SmallImages>
<Image Source="res/CutSmallImage16.bmp" MinDPI="96" />
<Image Source="res/CutSmallImage20.bmp" MinDPI="120" />
<Image Source="res/CutSmallImage24.bmp" MinDPI="144" />
<Image Source="res/CutSmallImage32.bmp" MinDPI="192" />
</Command.SmallImages>
<Command.LargeHighContrastImages>
<Image Source="res/CutLargeImage32HC.bmp" MinDPI="96" />
<Image Source="res/CutLargeImage40HC.bmp" MinDPI="120" />
<Image Source="res/CutLargeImage48HC.bmp" MinDPI="144" />
<Image Source="res/CutLargeImage64HC.bmp" MinDPI="192" />
</Command.LargeHighContrastImages>
<Command.SmallHighContrastImages>
<Image Source="res/CutSmallImage16HC.bmp" MinDPI="96" />
<Image Source="res/CutSmallImage20HC.bmp" MinDPI="120" />
<Image Source="res/CutSmallImage24HC.bmp" MinDPI="144" />
<Image Source="res/CutSmallImage32HC.bmp" MinDPI="192" />
</Command.SmallHighContrastImages>
</Command>
如果不指定所有这些图像,色带框架将使用可用的图像,并根据自己的需要调整它们的大小。当然,提供的图像,自己的方式来获得最好的结果。动态设置图片
在本节中,我们将看到如何动态设置一个按钮的图像。最终的结果会是这样的:
{A5}
这不利于图像的时间,你需要运行它自己在工作中看到的代码。
"交换一次吗??按钮演示编程设置LargeImage财产,最简单的方法。
"交换图像??按钮演示如何设置的图像,根据建议的大小。
我添加了一个RibbonLib.Ribbon类的新功能,名为ConvertToUIImage。这里是你如何使用它:{C}
如果你想设置的图像具有正确的大小,根据当前的DPI设置,以避免从调整你的形象色带框架,你应该检查SystemInformation.IconSize.Width价值。
大型图片大小应(SystemInformation.IconSize.Width x SystemInformation.IconSize.Width)和小的图像尺寸应(SystemInformation.IconSize.Width / 2)×(SystemInformation.IconSize.Width / 2)。
在这里设置的图像,根据Windows设置的一个例子:
幕后void _buttonDropB_OnExecute(PropertyKeyRef key,
PropVariantRef currentValue, IUISimplePropertySet commandExecutionProperties)
{
List<int> supportedImageSizes = new List<int>() { 32, 48, 64 };
Bitmap bitmap;
StringBuilder bitmapFileName = new StringBuilder();
int selectedImageSize;
if (supportedImageSizes.Contains(SystemInformation.IconSize.Width))
{
selectedImageSize = SystemInformation.IconSize.Width;
}
else
{
selectedImageSize = 32;
}
exitOn = !exitOn;
string exitStatus = exitOn ? "on" : "off";
bitmapFileName.AppendFormat(@"..\..\Res\Exit{0}{1}.bmp",
exitStatus, selectedImageSize);
bitmap = new System.Drawing.Bitmap(bitmapFileName.ToString());
bitmap.MakeTransparent();
_buttonDropB.LargeImage = _ribbon.ConvertToUIImage(bitmap);
}
ConvertToUIImage方法实际上是创建一个名为UIRibbonImageFromBitmapFactory,实现IUIImageFromBitmap色带框架的COM对象的实例。这个接口提供了一个包装作为一个IUIImage接口给定的HBITMAP(位图处理)的功能。
带状图像属性工作IUIImage这些实例。请注意,实际创造的UIRibbonImageFromBitmapFactory RibbonLib.Ribbon InitFramework方法。
奖金
我的助手类的实施{A6} ribbon控件类似,我添加了标签,集团和Button控件的辅助类。这些佣工让你轻易改变属性选项卡,组和按钮。 Button类也暴露了一个OnExecute事件,这有利于您回应按钮点击的方式。
一如往常,这个职位的结果是使用WinForms应用程序中的带状功能的又一例证。查找{A7}。
这是现在,
阿里克Poznanski。