Форум: "Прочее";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
ВнизМатематика Найти похожие ветки
← →
{RASkov} © (2008-08-22 23:36) [0]1)
for C:=0 to 2 do
for R:=0 to 2 do begin
Ind:=R*2+C;
.......
Что-то никак не соображу как в Ind получить последовательность (0,1,2,3,4,5,6,7,8) или (1,2,3,4,5,6,7,8,9)
2)
Или вот такой вопрос:
Как расчитать Rect"ы зная их кол-во и размер сетки. Т.е.var R: TRect;
begin
ColCount:=5;
RowCount:=5;
for I:=0 to ColCount*RowCount-1 do begin
R:=Rect(?)
Canvas.Rectangle(R); //Должна получится на канве сетка 5х5
........
Ох уж эта математика, да еще и в пятницу :(
← →
palva © (2008-08-22 23:39) [1]C*3+R+1
← →
Zeqfreed © (2008-08-22 23:41) [2]2)
x := I mod ColCount;
y := I div RowCount;
R := Rect(x * rectWidth, y * rectWidth, x * rectWidth + rectWidth, y * rectWidth + rectHeight);
Вроде :)
← →
DVM © (2008-08-22 23:42) [3]
> Ох уж эта математика, да еще и в пятницу :(
завязывай, ночь на дворе :)
← →
TUser © (2008-08-22 23:43) [4]C*3+R, по аналогии с перечислением десятичных числе - множим на 10, хотя макс цифра 9.
границы i-й ячейки W*i...W*(i+1) + толщину границ учесть и тоже самое по веритикали
← →
Zeqfreed © (2008-08-22 23:44) [5]> Zeqfreed © (22.08.08 23:41) [2]
Копипаст меня подвел :) Ну как-нибудь разберетесь.
← →
{RASkov} © (2008-08-22 23:59) [6]Ага... Спасибо.
С первым разобрался так:
for C:=0 to ColCount do
for R:=0 to RowCount do begin
Ind:=R*(ColCount+1)+C+1;
RC:=Rect(C*IM_W+IM_HS, R*IM_H+IM_VS, C*IM_W+IM_W, R*IM_H+IM_H); //Не верно!
Canvas.Rectangle(RC);
Canvas.TextOut(RC.Left+5, RC.Top+5, IntToStr(Ind));
end;
константы IM_xxx - это ширина ректа и отступ между ними...
Кстати тоже пока не верно расчитывается RC, но с этим я думаю уже разберусь сам... Еще раз спасибо palva, TUser.
А со вторым - намек вроде понял, но пока не получилось.... но думаю тоже "допру". Спасибо Zeqfreed.
Ну и тебе спасибо DVM ;):)
← →
{RASkov} © (2008-08-23 12:55) [7]> А со вторым - намек вроде понял, но пока не получилось..
Со вторым вообще оказалось еще проще, чем с первым... :)
Там и "в див" и "в мод" нужно на одно и тоже значение делить.
Правда я вчера последовал совету DVM...
А сегодня со свежим взглядом на жизнь все сделал, но все равно огромное спасибо, быть может я бы долго еще соображал с этой примитивной математикой...
И тут
> RC:=Rect(C*IM_W+IM_HS, R*IM_H+IM_VS, C*IM_W+IM_W, R*IM_H+IM_H); //Не верно!
вот как нужно:L:=RC_HSPACE+C*(RC_WIDTH+RC_HSPACE);
T:=RC_VSPACE+R*(RC_HEIGHT+RC_VSPACE);
RC:=Rect(L, T, L+RC_WIDTH, T+RC_HEIGHT);
Теперь Верно!
:)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.071 c