使用GDI +绘制各种颜色:
brush = new SolidBrush(color);
graphics.FillRectangle(brush, x, y, width, height);
Run Code Online (Sandbox Code Playgroud)
您会注意到在玻璃上没有显示不透明的颜色:

我如何在玻璃上画出纯色?
您还会注意到完全不透明的颜色会根据颜色的不同而有所不同:

有人能指出我在桌面合成器上的文档,解释了如何处理不同的颜色?
您还会注意到FillRectangle行为与以下不同FillEllipse:
FillEllipse 不透明的颜色会产生不透明的颜色FillRectangle 不透明的颜色部分(或完全)透明
请解释非感性行为.
Alwayslearning建议我改变合成模式.来自MSDN:
CompositingMode枚举
该CompositingMode枚举指定如何呈现的颜色与背景颜色组合.此枚举由使用
Graphics::GetCompositingMode和"图形:: SetCompositingMode"的方法图形类.Run Code Online (Sandbox Code Playgroud)CompositingModeSourceOver指定在渲染颜色时,它与背景颜色混合.混合由要渲染的颜色的alpha分量确定.
Run Code Online (Sandbox Code Playgroud)CompositingModeSourceCopy指定在渲染颜色时,它会覆盖背景颜色.此模式不能与TextRenderingHintClearTypeGridFit一起使用.
从描述来看CompositingModeSourceCopy,听起来这不是我想要的选择.从它所施加的限制来看,它听起来像我想要的选项.并且通过禁用合成或透明度,它不是我想要的选项,因为它执行SourceCopy而不是SourceBlend:

幸运的是,这不是一个我必须考虑的邪恶,因为它不能解决我的实际问题.构建我的graphics对象后,我尝试更改合成模式:
graphics = new Graphics(hDC);
graphics.SetCompositingMode(CompositingModeSourceCopy); //CompositingModeSourceCopy = 1
Run Code Online (Sandbox Code Playgroud)
结果对输出没有影响:

在Windows 8中,我将颜色方案设置为自动,并将我的壁纸配置为在x分钟后更改.配色方案根据活动壁纸而变化.
我正在开发一个WPF应用程序,并希望在Windows更改颜色方案以匹配当前壁纸时更改渐变.
有没有办法获得当前/实际的配色方案并被告知C#的变化?
在Windows 10上使用未记录的SetWindowCompositionAttributeAPI,可以为窗口启用玻璃.玻璃是白色或透明的,如截图所示:
但是,Windows 10"开始"菜单和通知中心(均使用玻璃)都与强调色混合,如下所示:
它是如何做到的?
以下示例中的重点颜色为浅紫色 - 这是设置应用程序中的屏幕截图:
此示例代码中定义的AccentPolicy结构具有重音状态,标志和渐变颜色字段:
AccentPolicy = packed record
AccentState: Integer;
AccentFlags: Integer;
GradientColor: Integer;
AnimationId: Integer;
end;
Run Code Online (Sandbox Code Playgroud)
并且州可以具有以下任何值:
ACCENT_ENABLE_GRADIENT = 1;
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2;
ACCENT_ENABLE_BLURBEHIND = 3;
Run Code Online (Sandbox Code Playgroud)
请注意,前两个是在这个github gist上找到的.
第三个工作正常 - 这使玻璃.其他两个,
所以这就越来越近了,它似乎是像音量控制小程序一样使用的一些弹出窗口.
这些值不能一起排序,并且GradientColor字段的值除了必须为非零之外没有任何效果.
直接在玻璃窗口上绘图会导致非常奇怪的混合.这里用红色填充客户区(ABGR格式为0x000000FF):
任何非零的alpha,例如0xAA0000FF,都不会产生任何颜色:
既不匹配"开始"菜单或通知区域的外观.
这些窗户是如何做到的?
我正在尝试使用SQL Server Management Studio的Import Data任务将数据导入表中.它只带来了26行,原来的49,325行.(编辑:这是99.9%来自的地方:(1-26/49325)*100 = 99.9%
在企业管理器中正确使用DTS会带来所有49,325行.
为什么SSMS没有导入所有行,报告它成功传输了49,325,并且没有遇到任何错误?为什么企业管理器能够正确导入所有49,325行?
Microsoft SQL Server Management Studio版本:10.0.1600.22(从SQL Server 2008开始,今天安装在全新的Windows 7计算机上,应用了SP1)
该STRTransactions表最初是空的:
Source是以下ContosoFrobManager数据库lithium:
目的地是Grob数据库lithium;
我想从一个(或多个)表复制数据:

我想复制STRTransactions表格:

您可以附加到现有表,这很好(它是空的).我想启用身份插入.并且不要尝试导入时间戳(因为你无论如何都会抱怨):

马上跑,没关系:

是的,你要做的事情:

我设法在传输49,325行时捕获它,大约在1k标记处:

全部完成.成功复制了所有49,325行:

这是报告:
执行成功
初始化数据流任务(成功)
初始化连接(成功)
设置SQL命令(成功)
设置源连接(成功)
设置目标连接(成功)
验证(成功)消息警告0x80049304:数据流任务1:警告:无法打开全局共享内存以与性能DLL通信; 数据流性能计数器不可用.要解决此问题,请以管理员身份运行此程序包,或在系统控制台上运行.(SQL Server导入和导出向导)警告0x80047076:数据流任务1:输出"OLE DB源输出"(11)上的输出列"timestamp"(158)和组件"Source - STRTransactions"(1)随后未使用在数据流任务中.删除此未使用的输出列可以提高数据流任务性能.(SQL Server导入和导出向导)
准备执行(成功)
预执行(成功)
执行(成功)
复制到[dbo].[STRTransactions](成功)传输49325行
消息信息0x402090df:数据流任务1:"组件"目标中的数据插入的最终提交 - STRTransactions"(163)"已启动.(SQL Server导入和导出向导)信息0x402090e0:数据流任务1:"组件"目标中的数据插入的最终提交 - STRTransactions"(163)"已结束.(SQL Server导入和导出向导)
- 后执行(成功)消息信息0x4004300b:数据流任务1:"组件"目标 - STRTransactions"(163)"写入49325行.(SQL Server导入和导出向导)
优秀.全部完成." 写了49325行 ". …
我正在使用Windows 7 RTM,我想知道控制面板如何能够如此顺利地更新Aero Glass颜色而无需重新启动DWM(uxsms).DwmSetColorizationColor不再工作了......
我试图检索任务栏和/或我的应用程序主窗口的背景和文本颜色.原来,Windows 7没有返回正确的颜色.如果我切换到粉红色的主题,Windows 7仍然返回浅蓝色的窗口标题,虽然那不是真的.这发生在使用
GetSysColor(COLOR_ACTIVECAPTION);
Run Code Online (Sandbox Code Playgroud)
以及使用HTHEME hTheme = OpenThemeData(hwnd,L"WINDOW");
HRESULT result = GetThemeColor(
hTheme,
WP_CAPTION,
CS_ACTIVE,
TMT_FILLCOLORHINT,
&color);
Run Code Online (Sandbox Code Playgroud)
此外,我发现自己尝试各种参数组合来找出标题文本的颜色.我知道microsofts页面
但这些数百个参数的大多数组合都是无效的.是否有任何列表和/或描述可以使用哪些组合?
即
GetThemeColor(
hTheme,
WP_CAPTION, // BP_PUSHBUTTON,
CS_ACTIVE,
TMT_CAPTIONTEXT,
&color);
Run Code Online (Sandbox Code Playgroud)
返回"未找到元素".
我想有办法用WPF或C#代码隐藏获取用户Windows主题的主题颜色.使用这种颜色我的意思是可以在Windows 7下的个性化\窗口颜色和外观中设置的颜色(我认为也是Vista).我想用这种颜色来制作渐变,就像Trillian 5做的那样.

我试图自己找到它,但不幸的是我没有到达任何地方.显然它不在SystemColors.Whatever.我在MSDN上找到了一些东西,但我无法弄清楚如何使用它,我也不认为这是我想要的.
如果有人能帮助我,我将不胜感激.
要使用WindowChrome类自定义窗口的外观,我想在Windows 8.1中获得WPF窗口的标题栏颜色.
首先,我试过了
SystemParameters.WindowGlassColor
Run Code Online (Sandbox Code Playgroud)
但是这个属性但不包括正确的alpha值(它总是255).
其次,我尝试了这个功能:
DwmGetColorizationColor
Run Code Online (Sandbox Code Playgroud)
它起初似乎工作正常.返回值具有正确的颜色信息,包括alpha通道.但是,在"颜色和外观"对话框中通过滑块更改"颜色强度"时,返回值将远离实际值并指示奇怪的颜色.
那么,有没有人对替代方法或解决方法有所了解?