Потяните единственный пиксель на Windows Forms

Я реорганизовал некоторые фрагменты вашего кода, чтобы они выглядели намного проще, и использую async / await (убедитесь, что в качестве рабочей среды для вашей функции выбран Node 8.10) вместо обратных вызовов. Я также избавился от параметров context и callback, так как они использовались для более старых версий NodeJS. Как только вы используете Node 8+, async / await должен быть опцией по умолчанию.

Кроме того, можно связать .promise () с docClient.putItem, чтобы вы могли легко ожидать его, что упрощает ваш код. Я оставил только часть DynamoDB (которая имеет отношение к вашему вопросу)

'use strict';
console.log("Loading function");

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region:process.env.MOBILE_HUB_PROJECT_REGION});

exports.handler = async (event) => {

    let params = {
        Item:{
            "prop0":1,
            "prop2":"text"
        },
        TableName:"testTable"
    };

    try {
      await docClient.put(params).promise();
    } catch (e) {
      console.log(e)
      return {
        messsage: e.message
      }
    }

    return { message: 'Data inserted successfully' };

};

Что нужно иметь в виду, если она все еще не работает:

  1. Убедитесь, что ваша лямбда-функция имеет необходимые разрешения для вставки элементов в DynamoDB (AmazonDynamoDBFullAccess сделает это)

  2. Вы ВСЕГДА должны указывать ключ разделения при вставке элементов в DynamoDB. В вашем примере JSON имеет только два свойства: prop1 и prop2. Если ни один из них не является ключом раздела, ваш код непременно завершится неудачей.

  3. Убедитесь, что ваша таблица также существует

Если код не работает, просто проверьте журналы CloudWatch, так как все исключения теперь регистрируются и выводятся на консоль.

86
задан Adrian Carneiro 28 September 2011 в 17:36
поделиться

4 ответа

Это установит один пиксель:

e.Graphics.FillRectangle(aBrush, x, y, 1, 1);
110
ответ дан 24 November 2019 в 08:02
поделиться

Объект Graphics не имеет этого, поскольку он является абстракцией и может использоваться для Обложка векторный графический формат. В этом контексте установка одного пикселя не имеет смысла. Формат изображения Bitmap имеет GetPixel () и SetPixel () , но не графический объект, построенный на нем. Для вашего сценария ваш вариант действительно кажется единственным, потому что не существует единого способа подбора одного пикселя для общего графического объекта (и вы точно не знаете, что это такое, как ваш элемент управления / форма). может быть двойной буферизацией и т. д.)

Зачем вам нужно установить один пиксель?

17
ответ дан 24 November 2019 в 08:02
поделиться

Видимо DrawLine рисует линию, которая на один пиксель меньше фактической указанной длины. Кажется, что нет DrawPoint / DrawPixel / whatnot, но вместо этого вы можете использовать DrawRectangle с шириной и высотой, равными 1, чтобы нарисовать один пиксель.

1
ответ дан 24 November 2019 в 08:02
поделиться

Там, где я рисую много отдельных пикселей (для различных пользовательских дисплеев данных), я склонен рисовать их в растровое изображение и затем перетаскиваем его на экран.

Операции BitPet GetPixel и SetPixel не особенно быстрые, потому что они выполняют очень много проверок границ, но довольно просто создать класс 'fast bitmap', который имеет быстрый доступ к растровому изображению ,

9
ответ дан 24 November 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: