![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Это фишка или баг фрипаскаля?
Вася © (2013-09-25 15:26:00)кусок кода:
case combobox1.ItemIndex of
0: koef:=0.1;
1: koef:=0.25;
2: koef:=0.5;
3: koef:=0.75;
4: koef:=1;
5: koef:=1.25;
6: koef:=1.5;
7: koef:=1.75;
8: koef:=2;
9: koef:=4;
end;
image1.Width:=round(GrayBMP.Width*koef);
image1.Height:=round(GrayBMP.Height);
в таком виде масштабирование происходит от 0 до 1, все что свыше все равно 1, а если поменять последние 2 строки на
image1.Width:=round(koef*GrayBMP.Width);
image1.Height:=round(koef*GrayBMP.Height);
в этом случае все масштабируется нормально
такие приколы встречались в языках с неявным преобразованием типов.
Собственно вопрос - тема топика
Free pascal
Вася (2013-09-30 11:09:00) [1]Точно, протупил :)
Туповатый (2013-09-28 09:28:00) [2]
> image1.Height:=round(GrayBMP.Height);
.....
> а если поменять последние 2 строки на
....
> image1.Height:=round(koef*GrayBMP.Height);
то ничего удивительного
Вася (2013-09-25 16:04:00) [3]koef - real, Width и Height - integer
Вася (2013-09-25 16:03:00) [4]
size := round(GrayBMP.Width*koef);- расчитывает правильно размер (и меньше единицы и меньше
ShowMessage(inttostr(size));
сейчас вернул на местоimage1.Width:=round(GrayBMP.Width*koef);теперь все правильно считает - ничего больше не менял 8(
image1.Height:=round(GrayBMP.Height);
Германн (2013-09-25 15:52:00) [5]Какого типа переменная koef? И какого типа свойства Width и Height?
[ВладОшин] (2013-09-25 15:51:00) [6]
> ShowMessage('%f %d',[koef, GrayBMP.Width ]); //и скока?
[ВладОшин] (2013-09-25 15:50:00) [7]не может быть..
koef := 2;
koef := round(GrayBMP.Width*koef);
ShowMessage('%f',[koef ]); //и скока?
зы
case combobox1.ItemIndex of
0: koef:=0.1;
1..8: koef:=0.25 * combobox1.ItemIndex;
9: koef:=4;
else // влруг не выполняется вообще?