Реализация копирования, вырезания и вставки - PullRequest
1 голос
/ 21 мая 2009

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

Я не знаю, как начать

Есть идеи?

Ответы [ 5 ]

1 голос
/ 23 июля 2009
  1. Используйте системный буфер обмена , на случай, если пользователь скопирует в одном экземпляре ваше приложение и вставит в другой, или если пользователь закроет окно и снова откроет его, он может вставить обратно данные.
  2. Наследуйте все формы программы из базового класса, который реализует копирование и вставку.
  3. Для копирования (или вырезать) сериализовать объект и поместить его в системный буфер обмена.
  4. Для вставки прочитайте системный буфер обмена и попробуйте десериализовать обратно к объекту формы (если приведение не выполнено, содержимое буфера обмена не было объектом вашего приложения)
  5. Сместить положение вставленной фигуры немного влево и вниз (чтобы пользователь знал, что на чертеже появилась новая форма)
0 голосов
/ 19 июня 2009

смотри это ...

http://www.wallpaperama.com/forums/javascript-copy-selected-text-box-select-all-highlight-text-form-copy-paste-t706.html

но для Firefox это не работает. Я также ищу похожую. опубликую, если я получу больше.

0 голосов
/ 21 мая 2009

Короче говоря, существует два способа

1) собственный буфер обмена 2) общесистемный буфер обмена

во втором случае использование должно использовать стандартный формат для хранения ваших данных. читать MSDN для получения дополнительной информации о буфере обмена Windows

или вы можете поддерживать два буфера обмена - собственный и системный. затем в вашем буфере обмена вы можете хранить конкретную информацию для вашего приложения, а в системном буфере просто изображение

0 голосов
/ 21 мая 2009

Вот некоторые глобальные моменты, которые значительно ускорят ваши проблемы, с которыми вы столкнетесь.

Попробуйте найти реверсивную линию / резинку. сделать выбор в картинке. Попробуйте найти LockBits в VB .NET, чтобы создать быстрый способ чтения и записи пикселей. Попробуйте изучить фоновую ветку и сообщить о прогрессе. Для операций на пиксель, которые занимают много времени. Попробуйте сделать MDI. С достаточным количеством строк состояния, чтобы сообщить о состоянии. Попробуйте сериализовать в xml / binary при сохранении файла проекта на диск (например, psd). Это также может быть удобно для создания функции отмены.

0 голосов
/ 21 мая 2009

для копирования: возьмите выделенный прямоугольник, создайте новое изображение такого размера, возьмите копию текущего изображения и поместите его в новый прямоугольник, смещенный на верхнюю часть выбранного прямоугольника

...