用于获取 HDR(高动态范围)是否处于活动状态的 Windows API

2024-01-06

我的环境是Windows 10 20H2(64位)和Visual Studio 2019。

我正在开发一个应用程序作为 C# WPF(.NET 5) 项目。我想编写一个代码,表明 HDR(高动态范围)当前在系统上处于活动状态。

在本文档中 https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/direct3darticles/high-dynamic-range.md,我得到了一些关于 Windows HDR 的提示。但我只能找到有关 UWP 和 DirectX 的文章。

我理想地希望使用 .NET API 或 Win32 API。 Windows 10 提供这些 API 吗?


您可以使用连接和配置显示器 (CCD) API https://learn.microsoft.com/en-us/windows-hardware/drivers/display/connecting-and-configuring-displays.

特别是DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO请求(MSDN 中并未真正记录,但在 wingdi.h 中定义)

以下是一些 C# 控制台应用程序示例代码,如果每个显示器支持 HDR 并且已启用,则该代码会转储该代码。

static void Main()
{
    var err = GetDisplayConfigBufferSizes(QDC.QDC_ONLY_ACTIVE_PATHS, out var pathCount, out var modeCount);
    if (err != 0)
        throw new Win32Exception(err);

    var paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
    var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
    err = QueryDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
    if (err != 0)
        throw new Win32Exception(err);

    foreach (var path in paths)
    {
        // get display name
        var info = new DISPLAYCONFIG_TARGET_DEVICE_NAME();
        info.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME;
        info.header.size = Marshal.SizeOf<DISPLAYCONFIG_TARGET_DEVICE_NAME>();
        info.header.adapterId = path.targetInfo.adapterId;
        info.header.id = path.targetInfo.id;
        err = DisplayConfigGetDeviceInfo(ref info);
        if (err != 0)
            throw new Win32Exception(err);

        var colorInfo = new DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO();
        colorInfo.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO;
        colorInfo.header.size = Marshal.SizeOf<DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO>();
        colorInfo.header.adapterId = path.targetInfo.adapterId;
        colorInfo.header.id = path.targetInfo.id;
        err = DisplayConfigGetDeviceInfo(ref colorInfo);
        if (err != 0)
            throw new Win32Exception(err);

        Console.WriteLine(info.monitorFriendlyDeviceName);
        Console.WriteLine(" Advanced Color Supported: " + colorInfo.advancedColorSupported);
        Console.WriteLine(" Advanced Color Enabled  : " + colorInfo.advancedColorEnabled);
        Console.WriteLine();
    }
}

private enum DISPLAYCONFIG_DEVICE_INFO_TYPE
{
    DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1,
    DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2,
    DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3,
    DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4,
    DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5,
    DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = 6,
    DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = 7,
    DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = 8,
    DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = 9,
    DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = 10,
    DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL = 11,
}

private enum DISPLAYCONFIG_COLOR_ENCODING
{
    DISPLAYCONFIG_COLOR_ENCODING_RGB = 0,
    DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 = 1,
    DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 = 2,
    DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 = 3,
    DISPLAYCONFIG_COLOR_ENCODING_INTENSITY = 4,
}

private enum DISPLAYCONFIG_SCALING
{
    DISPLAYCONFIG_SCALING_IDENTITY = 1,
    DISPLAYCONFIG_SCALING_CENTERED = 2,
    DISPLAYCONFIG_SCALING_STRETCHED = 3,
    DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4,
    DISPLAYCONFIG_SCALING_CUSTOM = 5,
    DISPLAYCONFIG_SCALING_PREFERRED = 128,
}

private enum DISPLAYCONFIG_ROTATION
{
    DISPLAYCONFIG_ROTATION_IDENTITY = 1,
    DISPLAYCONFIG_ROTATION_ROTATE90 = 2,
    DISPLAYCONFIG_ROTATION_ROTATE180 = 3,
}

private enum DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY
{
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = 0,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = 1,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = 2,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = 3,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = 4,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = 5,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = 6,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = 9,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = 15,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = 16,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL = 17,
    DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = unchecked((int)0x80000000),
}

private enum DISPLAYCONFIG_TOPOLOGY_ID
{
    DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x00000001,
    DISPLAYCONFIG_TOPOLOGY_CLONE = 0x00000002,
    DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x00000004,
    DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x00000008,
}

private enum DISPLAYCONFIG_PATH
{
    DISPLAYCONFIG_PATH_ACTIVE = 0x00000001,
    DISPLAYCONFIG_PATH_PREFERRED_UNSCALED = 0x00000004,
    DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE = 0x00000008,
}

private enum DISPLAYCONFIG_SOURCE_FLAGS
{
    DISPLAYCONFIG_SOURCE_IN_USE = 0x00000001,
}

private enum DISPLAYCONFIG_TARGET_FLAGS
{
    DISPLAYCONFIG_TARGET_IN_USE = 0x00000001,
    DISPLAYCONFIG_TARGET_FORCIBLE = 0x00000002,
    DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT = 0x00000004,
    DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH = 0x00000008,
    DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM = 0x00000010,
    DISPLAYCONFIG_TARGET_IS_HMD = 0x00000020,
}

private enum QDC
{
    QDC_ALL_PATHS = 0x00000001,
    QDC_ONLY_ACTIVE_PATHS = 0x00000002,
    QDC_DATABASE_CURRENT = 0x00000004,
    QDC_VIRTUAL_MODE_AWARE = 0x00000010,
    QDC_INCLUDE_HMD = 0x00000020,
}

private enum DISPLAYCONFIG_SCANLINE_ORDERING
{
    DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0,
    DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1,
    DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2,
    DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED,
    DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3,
}

private enum DISPLAYCONFIG_PIXELFORMAT
{
    DISPLAYCONFIG_PIXELFORMAT_8BPP = 1,
    DISPLAYCONFIG_PIXELFORMAT_16BPP = 2,
    DISPLAYCONFIG_PIXELFORMAT_24BPP = 3,
    DISPLAYCONFIG_PIXELFORMAT_32BPP = 4,
    DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5,
}

private enum DISPLAYCONFIG_MODE_INFO_TYPE
{
    DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1,
    DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2,
    DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = 3,
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_DEVICE_INFO_HEADER
{
    public DISPLAYCONFIG_DEVICE_INFO_TYPE type;
    public int size;
    public LUID adapterId;
    public uint id;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO
{
    public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
    public uint value;
    public DISPLAYCONFIG_COLOR_ENCODING colorEncoding;
    public int bitsPerColorChannel;

    public bool advancedColorSupported => (value & 0x1) == 0x1;
    public bool advancedColorEnabled => (value & 0x2) == 0x2;
    public bool wideColorEnforced => (value & 0x4) == 0x4;
    public bool advancedColorForceDisabled => (value & 0x8) == 0x8;
}

[StructLayout(LayoutKind.Sequential)]
private struct POINTL
{
    public int x;
    public int y;
}

[StructLayout(LayoutKind.Sequential)]
private struct LUID
{
    public uint LowPart;
    public int HighPart;

    public long Value => ((long)HighPart << 32) | LowPart;
    public override string ToString() => Value.ToString();
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_SOURCE_MODE
{
    public uint width;
    public uint height;
    public DISPLAYCONFIG_PIXELFORMAT pixelFormat;
    public POINTL position;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_RATIONAL
{
    public uint Numerator;
    public uint Denominator;

    public override string ToString() => Numerator + " / " + Denominator;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_2DREGION
{
    public uint cx;
    public uint cy;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO
{
    public POINTL PathSourceSize;
    public RECT DesktopImageRegion;
    public RECT DesktopImageClip;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO
{
    public ulong pixelRate;
    public DISPLAYCONFIG_RATIONAL hSyncFreq;
    public DISPLAYCONFIG_RATIONAL vSyncFreq;
    public DISPLAYCONFIG_2DREGION activeSize;
    public DISPLAYCONFIG_2DREGION totalSize;
    public uint videoStandard;
    public DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_TARGET_MODE
{
    public DISPLAYCONFIG_VIDEO_SIGNAL_INFO targetVideoSignalInfo;
}

[StructLayout(LayoutKind.Explicit)]
private struct DISPLAYCONFIG_MODE_INFO_union
{
    [FieldOffset(0)]
    public DISPLAYCONFIG_TARGET_MODE targetMode;

    [FieldOffset(0)]
    public DISPLAYCONFIG_SOURCE_MODE sourceMode;

    [FieldOffset(0)]
    public DISPLAYCONFIG_DESKTOP_IMAGE_INFO desktopImageInfo;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_PATH_SOURCE_INFO
{
    public LUID adapterId;
    public uint id;
    public uint modeInfoIdx;
    public DISPLAYCONFIG_SOURCE_FLAGS statusFlags;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_PATH_TARGET_INFO
{
    public LUID adapterId;
    public uint id;
    public uint modeInfoIdx;
    public DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
    public DISPLAYCONFIG_ROTATION rotation;
    public DISPLAYCONFIG_SCALING scaling;
    public DISPLAYCONFIG_RATIONAL refreshRate;
    public DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
    public bool targetAvailable;
    public DISPLAYCONFIG_TARGET_FLAGS statusFlags;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_PATH_INFO
{
    public DISPLAYCONFIG_PATH_SOURCE_INFO sourceInfo;
    public DISPLAYCONFIG_PATH_TARGET_INFO targetInfo;
    public DISPLAYCONFIG_PATH flags;
}

[StructLayout(LayoutKind.Sequential)]
private struct DISPLAYCONFIG_MODE_INFO
{
    public DISPLAYCONFIG_MODE_INFO_TYPE infoType;
    public uint id;
    public LUID adapterId;
    public DISPLAYCONFIG_MODE_INFO_union info;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct DISPLAYCONFIG_SOURCE_DEVICE_NAME
{
    public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string viewGdiDeviceName;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS
{
    public uint value;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct DISPLAYCONFIG_TARGET_DEVICE_NAME
{
    public DISPLAYCONFIG_DEVICE_INFO_HEADER header;
    public DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS flags;
    public DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
    public ushort edidManufactureId;
    public ushort edidProductCodeId;
    public uint connectorInstance;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string monitorFriendlyDeviceName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
    public string monitorDevicePat;
}

[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}

[DllImport("user32")]
private static extern int GetDisplayConfigBufferSizes(QDC flags, out int numPathArrayElements, out int numModeInfoArrayElements);

[DllImport("user32")]
private static extern int QueryDisplayConfig(QDC flags, ref int numPathArrayElements, [In, Out] DISPLAYCONFIG_PATH_INFO[] pathArray, ref int numModeInfoArrayElements, [In, Out] DISPLAYCONFIG_MODE_INFO[] modeInfoArray, out DISPLAYCONFIG_TOPOLOGY_ID currentTopologyId);

[DllImport("user32")]
private static extern int QueryDisplayConfig(QDC flags, ref int numPathArrayElements, [In, Out] DISPLAYCONFIG_PATH_INFO[] pathArray, ref int numModeInfoArrayElements, [In, Out] DISPLAYCONFIG_MODE_INFO[] modeInfoArray, IntPtr currentTopologyId);

[DllImport("user32")]
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO requestPacket);

[DllImport("user32")]
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_SOURCE_DEVICE_NAME requestPacket);

[DllImport("user32")]
private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_TARGET_DEVICE_NAME requestPacket);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于获取 HDR(高动态范围)是否处于活动状态的 Windows API 的相关文章

  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • 解析 JWT 令牌以仅获取有效负载内容,无需 C# 或 Blazor 中的外部库

    我正在使用 Blazor 编写可以访问 JWT 的客户端应用程序 我想知道一种简单的方法来读取令牌有效负载内容而不添加额外的依赖项 因为我不需要其他信息 也不需要验证令牌 我认为解析有效负载内容应该足够简单 只需将其写入方法即可 JwtTo
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • 检测到堆栈崩溃

    我正在执行我的 a out 文件 执行后 程序运行一段时间 然后退出并显示消息 stack smashing detected a out terminated Backtrace lib tls i686 cmov libc so 6 f
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 增强精神、递归和堆栈溢出

    为什么下面的代码在运行时崩溃 它会给出堆栈溢出错误 include
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 在 .NET 中,多次调用 string.Replace() 是否比单次调用 Regex 方法效率低?

    我想替换字符串中大约 8 个字符 使用 Regex 方法或仅使用对 string Replace 的多次调用会更有效吗 我将替换可能出现的大约 7 个字符 全部替换为下划线 字符可以出现在字符串中的任何位置 并且不按特定顺序等 除非您确实需
  • 使用 using 声明时,非限定名称查找如何工作?

    根据 C 标准 这是格式错误还是格式良好 namespace M struct i namespace N static int i 1 using M i using N i int main sizeof i Clang 拒绝它 GCC
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl

随机推荐

  • Google Visualization Charts API 示例已损坏,如何修复?

    请参阅此页面 例如 https developers google com chart interactive docs quick start https developers google com chart interactive d
  • 将 Visual Studio 更新到 17.4.0 Preview 2.1 后出现工作负载错误

    今天我将 Visual Studio 更新到 17 4 0 Preview 2 1 Microsoft Visual Studio Community 2022 64 位 预览版 版本 17 4 0 预览版 2 1 之后 我无法部署 Bla
  • 如何对数据仓库中的流程和状态历史进行建模?

    假设我们有D PROCESS D WORKER and D STATUS作为尺寸和事实F EVENT将流程 内容 与工作人员 负责人 和 当前 状态联系起来 进程状态随时间而变化 我们应该存储在F EVENT每个进程 状态 工作人员一行 或
  • 通过 .net 中的 web.config 利用浏览器缓存?

    有些站点位于共享主机 Windows 2003 Server 上 因此我无法访问服务器配置 我到处都读到了有关利用浏览器缓存的内容 特别是静态文件 jpg css js 等 但是 在我的情况下如何做到这一点 主机已安装 NET web co
  • Accepts_nested_attributes_for 和nested_form 插件

    我在 form html haml 部分中有以下代码 它用于新建和编辑操作 仅供参考 我使用 Ryan Bates 的插件嵌套形式 http github com ryanb nested form fields f fields for
  • 为什么“join”不是“Monad”类的一部分[重复]

    这个问题在这里已经有答案了 众所周知的事实是 gt gt 可以使用来实现fmap and join while join可以使用来实现 gt gt 我们有什么理由不定义Monad与 一起上课join包含并使用以下默认定义 join x x
  • 图表js可以处理多少数据

    对于我的应用程序 我正在发出数千个数据点的获取请求 当我使用图表js显示数据时 渲染时间很长 而且我遇到了滞后 我还注意到每个数据点的 x 轴标签没有正确显示 因此必须省略它们 我喜欢图表的时尚设计和用户界面 但无法让它很好地适合我的用例
  • 关闭谷歌地图 API v3 中所有打开的信息窗口

    正如标题所述 在给定的事件中 对我来说 这恰好是在打开一个新的事件时 google maps InfoWindow我希望能够关闭任何其他当前打开的信息窗口 现在 我可以一次打开很多个 但我只想一次只打开一个 我正在动态创建信息窗口 即我不提
  • 返回 f 字符串的 For 循环函数

    我是 python 新手 尝试编写一个函数 该函数接受字典列表并返回一个新的字符串列表 其中每个字典中的名字和姓氏键连接在一起 names first John last Smith first Jessie last Snow def n
  • 无法在react.js中使用本地图像

    基本上我无法使用本地图像 我真的不确定为什么 我已经安装了 url loader 和 file loader 并尝试请求该文件 HeaderNavigation js 我尝试使用的图像位于同一目录中 并被引用为品牌图像 Created by
  • 通过 Visual Studio 代码 launch.json 运行 foreman start

    目前 我正在通过输入运行我的解决方案foreman start进入命令行 工作正常 我正在尝试使用 Visual Studio 代码调试我的代码 为此 我创建了一个 launch json 文件 version 0 2 0 configur
  • 在Python中以特定模式打印字母

    我有以下字符串并将其拆分 gt gt gt st 2g k 3p gt gt gt l filter None st split gt gt gt print l 2g k 3p 现在我想打印 g 字母两次 k 字母一次 p 字母三次 gg
  • 双面文件问题

    我正在程序中读取 system32 文件夹中的一些文件 其中一个文件 C Windows System32 gdi32 dll 表现出一种非常奇怪的行为 当我从程序中读取它时 它显示大小为 310 784 字节 当我从资源管理器查看它的大小
  • 如何从控制器调用 EditorFor

    我有地点列表 public class Location public string LocationName get set public string Address get set 我为此类创建了编辑器模板 div span Html
  • 从视频文件创建缩略图返回空位图

    我发送启动摄像机的意图 PackageManager pm getPackageManager if pm hasSystemFeature PackageManager FEATURE CAMERA Intent video new In
  • 在三层控制台应用程序中使用常量或全局变量

    我有一个像这样的 3 层应用程序设置 带有控制台表示层 在我的业务逻辑中 我有一个类 我在其中声明了许多固定的不同变量 即值不会改变 这些变量的值取自应用程序设置 现在我发现的问题是我的类调用不同的方法 其中这些变量通过方法签名传递 这是好
  • 如何合并单个提交?

    有时我同时与多个分支机构合作 假设我有名为 master release 1 1 和 Experimental 的分支 我创建一个新文件或在实验中进行更改 并且我希望将一项更改应用于其他分支 我可以在 git 中执行此操作吗 如果我只是将提
  • “已连接”UDP 套接字收到 ICMP 端口不可达

    基于 UDP 是无连接协议的前提 我假设主机是否启动或关闭都无关紧要 然而 现在我正在进行测试 我发现当我 连接 我的 UDP 客户端套接字时 write到该套接字会返回错误 因为服务器已发回 ICMP 端口不可达错误 连接 UDP端口的目
  • 如何测量 Android 上的 VRAM 消耗?

    我想获取Android设备VRAM大小 有没有从程序中获取的方法 让我们使用 Nexus One 进行一些计算 屏幕分辨率为 480x800 因此所需的最小视频内存大小为 400 800 4 bytes 1536000 bytes 假设驱动
  • 用于获取 HDR(高动态范围)是否处于活动状态的 Windows API

    我的环境是Windows 10 20H2 64位 和Visual Studio 2019 我正在开发一个应用程序作为 C WPF NET 5 项目 我想编写一个代码 表明 HDR 高动态范围 当前在系统上处于活动状态 在本文档中 https