Попробую через LockBits, на вскидку нашел такой код, не уверен будет ли он работать
Rectangle srcArea = new Rectangle(0, 0, srcBitmap.Width, srcBitmap.Height);
BitmapData srcData = srcBitmap.LockBits(srcArea, ImageLockMode.ReadOnly, destBitmap.PixelFormat);
Rectangle destArea = new Rectangle(25, 25, srcBitmap.Width, srcBitmap.Height);
BitmapData destData = destBitmap.LockBits(destArea, ImageLockMode.WriteOnly, destBitmap.PixelFormat);
IntPtr srcPtr = srcData.Scan0;
IntPtr destPtr = destData.Scan0;
byte[] buffer = new byte[srcData.Stride];
for (int i = 0; i < srcData.Height; ++i)
{
Marshal.Copy(srcPtr, buffer, 0, buffer.Length);
Marshal.Copy(buffer, 0, destPtr, buffer.Length);
Максим Гаврилов: данные проверки имеют место быть в тупых языках типа си, где каждый чих нужно разжёвывать, C# выполнит эту операцию в float и вернет NaN в результате, ни какой проверки не требуется. К тому же откуда вообще взялись 0.000001, я бы не взял вас как менеджера потому как не умеете сформулировать задачу. ТЗ в данном случае явно было некорректным.
monah_tuk: Cinnamon, все ставил на автомате, по умолчанию он мелкий своп сделал, но 2гига оперативы ему должно было хватить чтобы запуститься, зачем ему свопиться
monah_tuk: не понял точно что с ним было не так, может и не с видео проблема была, но работал он как celeron из середины 90х, таких лагов даже на 7ке загруженной не было. Проверить что именно тупило тоже не смог, т.к. даже до консоли не смог дотянуться чтобы хотябы top набрать, тупило жутко.
странно, но mint крайне не адекватно работает на том железе для которого его планировал поставить, он не смог подтянуть графические драйвера и с большим трудом отрисовывал все это програмно, так что mint отпадает с всем модификациями
Кирилл Оленёв: как будто по названию университета это можно определить, 98% всех практических знаний которые я получил за время учебы это те знания, которые я получил самостоятельно, 99% всего что было на парах просто шлак, который со временем выветривается или в лучшем случае откладывается мозгом "в дальний угол, на всякий случай".
На одной работе так устраивался, системным администратором, дали сервер и сказали что мол это и это работает не правильно, дали 30 минут, все починил и приняли на работу. Где то год там проработал, потом зарплата маленькой стала казаться и сменил работу. Но у программиста так не факт что получится, т.к. давать кусок исходников промышленного приложения не каждый рискнет.
qin555: а что конкретно по ней интересует, исходник могу выложить, доработкой под ваши нужды бесплатно заниматься не планирую, если и возьмусь то это будет не меньше чем вам уже предложили в коментариях за готовый
Дмитрий Михайленко: не, такие где "небольшой шумок" не подходят, нужно что ни будь по экстремальней, чтобы все что угодно по сравнению с этим адом было райский уголок
mausykotausy: сделайте возможность быстрого "пролистывания" оглавления с возможностью перейти к нужной главе и необходимость в закладках и т.п. отпадет автоматически
Иван Филатов: конечно, восстановить можно, но это не будет просто отключил диск и работаешь с оставшимся, для этого надо будет пересобирать массив или чтото в этом духе и есть риск того, что в процессе что ни будь пойдет не так и массив сломается окончательно и восстанавливать придется уже специализированным софтом и это будет уже не так просто
Иван Филатов: "выше в коментариях" это наверное про "Дисковые пространства" или Storage Pool, это как раз относится к категории "полноценный виртуальный пул", если один диск умрет умрет весь пул со всем его содержимым.
Иван Филатов: тут есть выбор, либо "полноценный виртуальный пул", но в случае смерти одного диска умрут оба, либо "недодиск", в котором если один умрет останутся те файлы, что были на втором, но проблемы с совместимостью. Мне для хранения торрентов, фильмов, музыки и прочего шлака больше походит недодиск с его несовместимостью, игры я предпочитаю ставить в отдельно заточенные под это папки.
Rectangle srcArea = new Rectangle(0, 0, srcBitmap.Width, srcBitmap.Height);
BitmapData srcData = srcBitmap.LockBits(srcArea, ImageLockMode.ReadOnly, destBitmap.PixelFormat);
Rectangle destArea = new Rectangle(25, 25, srcBitmap.Width, srcBitmap.Height);
BitmapData destData = destBitmap.LockBits(destArea, ImageLockMode.WriteOnly, destBitmap.PixelFormat);
IntPtr srcPtr = srcData.Scan0;
IntPtr destPtr = destData.Scan0;
byte[] buffer = new byte[srcData.Stride];
for (int i = 0; i < srcData.Height; ++i)
{
Marshal.Copy(srcPtr, buffer, 0, buffer.Length);
Marshal.Copy(buffer, 0, destPtr, buffer.Length);
srcPtr += srcData.Stride;
destPtr += destData.Stride;
}
srcBitmap.UnlockBits(srcData);
destBitmap.UnlockBits(destData);