小编Mik*_*ike的帖子

C++从hBitmap获取RGB

使用位图对我来说是一个很新的事情,所以我一直在努力学习我已经阅读过的在线教程和策略.基本上我的目标是扫描屏幕上的特定RGB值.我相信这样做的步骤是捕获hBitmap中的屏幕,然后从中生成一个我可以扫描的RGB值数组.

我最初是用GetPixel开始的,但速度很慢.解决方案是使用GetDIBits生成RGB值数组.问题是它返回奇怪的,可能是随机的RGB值.

我正在使用以下从其他教程中找到的代码:

/* Globals */
int ScreenX = GetDeviceCaps(GetDC(0), HORZRES);
int ScreenY = GetDeviceCaps(GetDC(0), VERTRES);
BYTE* ScreenData = new BYTE[3*ScreenX*ScreenY];

void ScreenCap() {
    HDC hdc = GetDC(GetDesktopWindow());
    HDC hdcMem = CreateCompatibleDC (hdc);
    HBITMAP hBitmap = CreateCompatibleBitmap(hdc, ScreenX, ScreenY);
    BITMAPINFOHEADER bmi = {0};
    bmi.biSize = sizeof(BITMAPINFOHEADER);
    bmi.biPlanes = 1;
    bmi.biBitCount = 24;
    bmi.biWidth = ScreenX;
    bmi.biHeight = -ScreenY;
    bmi.biCompression = BI_RGB;
    bmi.biSizeImage = ScreenX * ScreenY;
    SelectObject(hdcMem, hBitmap);
    BitBlt(hdcMem, 0, 0, ScreenX, ScreenY, hdc, 0, 0, SRCCOPY);
    GetDIBits(hdc, hBitmap, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ rgb pixel scanning hbitmap

6
推荐指数
1
解决办法
1万
查看次数

ApiController中的ASP.NET Web API路由

我一直在努力使用我的路由已经有一段时间了,经过几天尝试谷歌解决方案没有运气,我希望有人能够对我的问题有所启发.

我的WebApiConfig中有以下路由:

        config.Routes.MapHttpRoute(
            name: "AccountStuffId",
            routeTemplate: "api/Account/{action}/{Id}",
            defaults: new { controller = "Account", Id = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            name: "AccountStuffAlias",
            routeTemplate: "api/Account/{action}/{Alias}",
            defaults: new { controller = "Account", Alias = RouteParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

以及以下控制器方法:

    [HttpGet]
    public Account GetAccountById(string Id)
    {
        return null;
    }

    [HttpGet]
    public Account GetAccountByAlias(string alias)
    {
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

如果我打电话: /API/Account/GetAccountById/stuff那么它正确调用GetAccountById.

但如果我打电话,/API/Account/GetAccountByAlias/stuff那么没有任何反应

显然,这里的顺序很重要,因为如果我在WebApiConfig中切换我的路由声明,那么/API/Account/GetAccountByAlias/stuff正确调用GetAccountByAlias,/API/Account/GetAccountById/stuff什么都不做.

这两个[HttpGet]装饰是我在谷歌上发现的一部分,但它们似乎没有解决问题.

有什么想法吗?我做了什么明显错误的事吗?

编辑:

当路由失败时,页面显示以下内容:

<Error>
    <Message>
        No HTTP resource was …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-controller asp.net-web-api asp.net-web-api-routing

4
推荐指数
1
解决办法
8782
查看次数