#c #uwp #casting #c -cx
#c #uwp #Кастинг #c -cx
Вопрос:
сценарий: Я хотел бы обменять чернильный штрих между устройствами, работающими в одной локальной сети.
Шаг 1: соберите все штрихи, нарисованные на экране от клиента:
// Send strokes to a remote server.strokesToReplay = inkCanvas-gt;InkPresenter-gt;StrokeContainer-gt;GetStrokes();const int sz = sizeof(strokesToReplay);char msgToSend[sz];memcpy(msgToSend, amp;strokesToReplay, sz);send(tcpClient.sockfd, msgToSend, sz, 0);
Шаг 2: получение данных от серверной части:
// tcpServer is an instance of TCPServer, which contains// a function that calls listen -gt; accept// to establish a connection with the clientbytesRecv = tcpServer.recvFromClient();// Received data was storaged in TCPServer::buffer (char buffer[16384])
Что я хотел бы сделать, так это перенести данные из буфера в IVectorView.Так что из него можно повторить чернильный штрих, как:
for (InkStroke^ inkStroke : buffer) { ... to do}
Но вот вопрос: как я могу привести символ * в IVectorView?
Я пробовал memcpy() и static_cast. Но так как в IVectorView нет надлежащей памяти, memcpy() уничтожит всю программу.
Функция static_cast() не будет работать с IVectorView.
Теперь я подумываю о копировании данных в буфер обмена, а затем вызове API, предоставляемого Microsoft, который получает данные из буфера обмена и автоматически преобразует их в штрихи. Но Я Не Знаю, Работает Это Или Нет… Есть ли какие-нибудь советы, которые вы, ребята, можете мне дать? Спасибо.
Комментарии:
1. Я очень уверен, что
const int sz = sizeof(strokesToReplay);
это уже неправильно.GetStrokes
возвращает динамический список с использованиемsizeof
on, который даст совершенно другой результат. Иmemcpy
также не может быть правильным, вы хотите скопировать и отправить фактические штрихи2. Вы также не можете просто сбросить память штрихов в массив байтов, вам нужен правильный код сериализации и десериализации
3. Конечно, я тоже об этом думал… Есть ли у вас какой-нибудь совет, который вы могли бы мне дать?
4. Я также подумал о том, чтобы сохранить штрихи в файл .gif и отправить его. Это хорошая идея?
5. Сохранение его в формате изображения, а затем анализ, который кажется крайне неэффективным (вы будете передавать много пустых данных каждый раз, когда отправляете их по сети). Просто сериализация отдельных штрихов должна быть проще