![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TImage слои само масштабировало в зависимости от количества слоёв
radiokarazinec © (2010-12-20 20:32:00)Нужно сделать чтобы так: вот есть у меня в Memo данные, мне надо чтобы при нажатии на кнопку визуализация на Image рисовались слои, на них писались цифры из Memo, а сами слои зарисовывались разной штриховкой, типа bsCross и другими. т.е один слой - одно число- одна штриховка, другой слой-другая штриховка,
antonn (2010-12-21 02:27:00) [21]наверное автору нужно что-то типа такого http://desksoft.ru/index.php?downloads=attachments&id=306
radiokarazinec (2010-12-21 02:23:00) [22]JvFullColorSpaces что это и то что с ним связано?
v_a_belousov (2010-12-21 02:18:00) [23]
> спасибо огромное. буду думать!
Ты бы лучше вопросы задавал. А то боюсь я сейчас до чего не надо додумаешься...
Германн (2010-12-21 02:15:00) [24]
> я вообще студент.
Был. :)
И это хорошо, что "и уже не студент!"
Нам такой хоккей не нужен!
radiokarazinec (2010-12-21 02:14:00) [25]спасибо огромное. буду думать!
v_a_belousov (2010-12-21 02:10:00) [26]
> я вообще студент
Тогда тем более...
radiokarazinec (2010-12-21 02:09:00) [27]я вообще студент. Ega23
v_a_belousov (2010-12-21 01:52:00) [28]
> Ega23
Я же не дал ему готовую вещь... там надо немножко подумать... ну или даже не немножко... чтобы сделать так как ему надо...
Ega23 (2010-12-21 01:51:00) [29]
> В общем вот лови...
Завтра в резюме он напишет, что знает delphi, придёт к тебе в контору, посидит на форуме, попросит, ему также дадут код, после чего тебя уволят. Т.к. ты сидел неделю, а он за 2 дня сделал.
А в армии, тем временем, недобор. И ваххабиты не дремлють.
v_a_belousov (2010-12-21 01:49:00) [30]
> radiokarazinec ©
Ничего себе у тебя кода... у меня и то наверно поменьше будет...
v_a_belousov (2010-12-21 01:47:00) [31]
> Тут нет возможности как тебе нужно по горизонтали
Или по вертикали... я уже запутался... но смысл в том что с этим быстрее сделаешь
v_a_belousov (2010-12-21 01:47:00) [32]В общем вот лови... http://project-w-m.narod.ru/for_radiokarazinec.rar
Тут нет возможности как тебе нужно по горизонтали, зато для тебя хоть что то будет...
KilkennyCat (2010-12-21 01:46:00) [33]
> ичто это даст?
в филосовском смысле - ничего... мы фсе умлем...
radiokarazinec (2010-12-21 01:41:00) [34]ичто это даст?
Ega23 (2010-12-21 01:41:00) [35]
> вот мой код, подскажи что тут изменить
TBitBtn заменить на стандартный TButton. Хоть нельзя картинку отрисовывать, зато как везде будет.
radiokarazinec (2010-12-21 01:39:00) [36]вот мой код, подскажи что тут изменить, я его уже подшанял метом тыка
procedure TfrmMain.BitBtn1Click(Sender: TObject);
var
SL: TStringList;
i, h, y: Integer;
s: String;
Rate : Double;
Rects : array of TRect;
Color : TColor;
begin
SL := TStringList.Create;
SL.Assign (Memo1.Lines);
Image1.Picture:=nil;
with Image1.Canvas do
begin
for i := 0 to SL.Count - 1 do begin
s := SL[i];
h := TextHeight('|')+3;
y :=0;
y:=y+h;
Color:=ClWhite;
//Массив прямоугольников, отображающих слои и воздух
SetLength(Rects,SL.Count+1);
//Закрашиваем старую картинку цветом фона
Image1.Canvas.Brush.Color := Color;
Image1.Canvas.Pen.Color := Color;
Image1.Canvas.FillRect(Image1.BoundsRect);
//Определяем цвет, которым можно рисовать на созданной картинке
Image1.Canvas.Brush.Color := clLtGray;
Image1.Canvas.Pen.Color := clBlack;
//Определяем масштабный коэффициент для пропорционального отображения слоев
Rate := Image1.Height/i;
Rects[0].Left := 0;
Rects[0].Right :=Image1.Width;
Rects[0].Top := 0;
Rects[0].Bottom := round(i);
Image1.Canvas.Brush.Color := $00EEEEEE; //определяем цвет заполнения
Image1.Canvas.Rectangle(Rects[0]);
Image1.Canvas.Pen.Color := clBlack;
Image1.Canvas.Brush.Color := clLtGray;
end ;
for i:=0 to SL.Count - 1 do
begin
Rects[i + 1].Left := 0;
Rects[i + 1].Right := Image1.Width;
Rects[i + 1].Top := Rects[i].Bottom;
Rects[i + 1].Bottom := Rects[i + 1].Top + round(h);
case i mod 6 of
0: Image1.Canvas.Brush.Style := bsCross;
1: Image1.Canvas.Brush.Style := bsFDiagonal;
2: Image1.Canvas.Brush.Style := bsHorizontal;
3: Image1.Canvas.Brush.Style := bsDiagCross;
4: Image1.Canvas.Brush.Style := bsVertical;
5: Image1.Canvas.Brush.Style := bsBDiagonal;
end;
//Рисуем прямоугольник с полученными координатами
Image1.Canvas.Rectangle(Rects[i+ 1]);
// TextOut(1, y+2, SL[i]);
// MoveTo(0 , y);
// LineTo(200, y);
y := y + h;
end;
// MoveTo(0 , y);
// LineTo(200, y);
end;
SL.Free;
end;
Ega23 (2010-12-21 01:39:00) [37]
> и чтобы каждая цифра выводилась в отдельном прямоуголгике
к [24] добавить функцию Length. Ну и + F1 не забываем
Ega23 (2010-12-21 01:37:00) [38]
> че тяжело скинуть, сегодня сдавать, ну плиз. тебе ведь не
> тяжело
че тяжело денег заплатить, сегодня пиво покупать, ну плиз. тебе ведь не тяжело
radiokarazinec (2010-12-21 01:37:00) [39]понимаешь, у меня запара с масштабным коэффициентом и чтобы каждая цифра выводилась в отдельном прямоуголгике
radiokarazinec (2010-12-21 01:35:00) [40]че тяжело скинуть, сегодня сдавать, ну плиз. тебе ведь не тяжело