首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WriteAbleBitmap.Pixels[]返回错误的颜色(偏移量?)

WriteAbleBitmap.Pixels[]返回错误的颜色(偏移量?)
EN

Stack Overflow用户
提问于 2013-12-14 18:20:59
回答 1查看 212关注 0票数 0

我正在尝试获取特定位置的像素颜色(Tap事件)。

我有以下代码:

代码语言:javascript
复制
 private void iiiimage_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        Point point = e.GetPosition(iiiimage);

        ApplicationTitle.Text = point.ToString();

        var wb = new WriteableBitmap(iiiimage, null);


        int arrayPos = (int)point.X * (int)point.Y;

        PageTitle.Text = arrayPos.ToString();

        int colorAsInt = wb.Pixels[arrayPos];


        Color c = Color.FromArgb((byte)((colorAsInt >> 0x18) & 0xff),
                          (byte)((colorAsInt >> 0x10) & 0xff),
                          (byte)((colorAsInt >> 8) & 0xff),
                         (byte)(colorAsInt & 0xff));

        r3ct.Fill = new SolidColorBrush(c);

    }

截图显示出了什么问题。白色错误(提示)的位置是蓝色的,但是代码返回一个像素,该像素位于图像顶部(红色)。

我做错了什么?

你好,尼尔斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-14 20:37:28

尝试执行以下修改。不过,我不知道这在WP7上是否有效。我想应该考虑ActualWidthActualHeight,因为您需要将以单位表示的坐标转换为像素。

代码语言:javascript
复制
private void iiiimage_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    Point point = e.GetPosition(iiiimage);

    ApplicationTitle.Text = point.ToString();

    var wb = new WriteableBitmap(iiiimage, null);

    int x, y;
    x = (int)(wb.PixelWidth * point.X / iiiimage.ActualWidth);
    y = (int)(wb.PixelHeight * point.Y / iiiimage.ActualHeight);
    int arrayPos = y * wb.PixelWidth + x;

    PageTitle.Text = String.Format("({0} ; {1}) --> {2}", x, y, arrayPos);

    int colorAsInt = wb.Pixels[arrayPos];


    Color c = Color.FromArgb((byte)((colorAsInt >> 0x18) & 0xff),
                        (byte)((colorAsInt >> 0x10) & 0xff),
                        (byte)((colorAsInt >> 8) & 0xff),
                        (byte)(colorAsInt & 0xff));

    r3ct.Fill = new SolidColorBrush(c);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20586680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档