Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TImage слои само масштабировало в зависимости от количества слоёв


Страницы:   1 2 3 4

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]

че тяжело скинуть, сегодня сдавать, ну плиз. тебе ведь не тяжело


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо