Здравствуйте, Dimonka, Вы писали:
D>Здравствуйте, de cobre, Вы писали:
DC>>Я видимо криво объяснил.
DC>>В данном случае рисование происходит на Panel->Canvas. Но это совершенно не принципиально, т.к. например если использовать TBitmap объект, то при задание такого же размера вылетает точно такой же трабл.
DC>>В общем, совершенно не принципиально какой метод будет вызван после Panel->Canvas->* сразу вылетает ошибка. Видимо инициализация битовой матрицы происходит не сразу а при вызове любого из методов холста, с этим и связано появление ошибки.
D>Вопрос весь в том — нужно рисование не экране или всё же на картинке?
D>Выделение пары сотен мегабайт чисто для того, чтобы нарисовать несколько линий, думаю, не совсем раумный вариант. Если же нужно сохранение в файл, то имеет смысл подумать о проецировании файлов в память и "рисовать" прямо в файл.
D>Где-то тут пробегали раньше притензии к битмапу, что существуют какие-то ограничения по размеру.
D>Как вариант можно попробовать разбивать на блоки 1000х1000 или ещё меньшие и работать с блоками. На сколько я знаю, фотошоп именно так и поступает.
D>Короче задача мне видится более комплексной, чем просто создать битмап 8000х8000
Я наводил на мысль что нужно создавать Device Independed Bitmap (DIB) — в памяти, так как в Device Depended Bitmap (DDB) размер ограничен видеопамятью вашей карточки.
Bitmap.HandleType := bmDIB;
А рисовать, я думаю, вы такую картинку сможете. Тут уже Windows само об этом подумает.