Добрый день! Необходимо написать графический редактор следующего вида: Окно разбито на 2 части, в левой вводятся параметры фигуры, в правой она отрисовывается. Например: для начала задан прямоугольник высотой 50 и шириной 100. Указываем высоту - 25, на ней ширина 50 и фигура должна преобразоваться, приняв форму песочных часов и далее в этом духе. Надеюсь нормально объяснил...
Программу еще не начал, код писать не прошу, необходима консультация в том, какие элементы выбрать для разработки, TPaintBox или TImage и т.д. и как лучше всё это отрисовывать, может кто может дать совет?
> Я так понимаю, речь идёт об этой строке, но изображение всё равно не сжимается, а часть его остается где-то за пределами....
Да, об этой. Она именно выводит то, что было в Img на форму. То, что там что-то за пределами - ну так что было в Img, то и вывелось. Можешь написать для контроля Img.SvaeToFile() и сравнить.
> При нажатии кнопки первым делом удаляем старое, и строим новое.
Что-то я не увидел, чтобы ты создавал новое при нажатии кнопки. У тебя, видимо полное непонимание происходящего.
TBitmap.Create - это создание изображения для работы, если этого не сделать, то с ним ничего делать нельзя. Эта процедура соответствует доставанию нового листа бумаги из стола. TBitmap.Free - это не стереть изображение ластиком с листа! Это выкинуть лист в мусорку, потому что тебе он больше не нужен. После Free делать с изображением ничего нельзя, поэтому его лучше пропиши в OnDestroy.
Всякие там рисования - это не создание нового листа, это рисование на текущем. А для того, чтобы стереть изображение ластиком, делай так:
with Img.Canvas do begin Brush.Style := bsSolid; // стиль заливки - заливать по полной Brush.Color := clWhite; // цвет заливки - белый Pen.Style := psClear; // линии не рисовать Rectangle(0, 0, Width, Height); // нарисовать прямоугольник на всю область end;
А потом, перед рисованием, не забудь обратно написать Pen.Style := psSolid; (а потом он линии рисовать не будет).