Вопрос № 79591: Ув. Эксперты. Как можно от редактировать изображение в Delphi?. Например, есть картинка, мы ее разрезаем на 4 части и меняем их местами и все это нужно сохранить. Или например поменять весь синий цвет на желтый, ну и т. д. Подскажите может есть каки-...Вопрос № 79606: Нужен компонент для Delphi, для работы с графикой чтобы поддерживал сохранение в gif или png и его методы лучше чтобы назывались также как в компоненте TImage...Вопрос № 79617: Добрый день!
Буду очень благодарен если поможете разобраться в одном вопросе.
Прочитал статью Д.Мироводина "работа со спрайтами" и стал пробовать
создавать простейшую анимацию.Вроде сделал все так как написано.
Но как сдела...Вопрос № 79618: Добрый день!
Подскажите как сделать что бы моя программа запускалась сама после
того как произойдет соединение с интернетом...Вопрос № 79630: Уважаемые эксперты!При компилировании кода программы(см. приложение) высвечивается Error Incompatible types: 'String' and 'Integer'. Как это устранить?...
Вопрос № 79.591
Ув. Эксперты. Как можно от редактировать изображение в Delphi?. Например, есть картинка, мы ее разрезаем на 4 части и меняем их местами и все это нужно сохранить. Или например поменять весь синий цвет на желтый, ну и т. д. Подскажите может есть каки-нибудь ссылки.
Отвечает: Ерёмин Андрей
Здравствуйте, Костенко Игорь Викторович!
Вообще, обработать картинку можно стандартным способом - через Canvas. Однако для профессиональной обработки нужно что-нибудь более мощное. В качестве примера - проект по вашему второму вопросу - замена цвета. Алгоритм: проходим все точки и, если нашли цвет1, то меняем его на цвет2. Работает? Работает. Но если применить этот алгоритм к картинке приличного разрешения (800х600 к примеру), то работать будет очень долго. В профессиональных графических редакторах используются другие алгоритмы. Кроме того, логично
было бы заменять не только 100%-ный жёлтый цвет, но и его оттенки. Жёлтый цвет в RGB - это (255,255,0). Если в картинке будет точка с цветом (255,255,1), то алгоритм её, конечно, пропустит. Хотя глазом такие два цвета различить невозможно. Выход: если нужно профессионально обрабатывать изображения, следует найти какие-то пакеты. Такие пакеты есть, но они естественно не являются бесплатными. Найти их несложно - на Torry.net например. Если
же обработка всё же не очень сложная, то можно обойтись и возможностями Canvas. Копирование части изображения, например - функция CopyRect. Желаю удачи!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор) Россия, Тула WWW:Программирование на Delphi. Помощь, советы, обмен опытом. ICQ: 286867644 ---- Ответ отправлен: 24.03.2007, 10:33 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за этот ответ. Объснение, как говорится "на пальцах".
Вопрос № 79.606
Нужен компонент для Delphi, для работы с графикой чтобы поддерживал сохранение в gif или png и его методы лучше чтобы назывались также как в компоненте TImage
Отправлен: 24.03.2007, 12:07
Вопрос задал: Mikutu (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: василий1
Здравствуйте, Mikutu!
ImageEn 2.7
http://www.hicomponents.com
синтаксис очень похож
Ответ отправил: василий1 (статус: 1-ый класс)
Ответ отправлен: 24.03.2007, 12:37 Оценка за ответ: 5 Комментарий оценки: Спасибо. Буду разбираться
Вопрос № 79.617
Добрый день!
Буду очень благодарен если поможете разобраться в одном вопросе.
Прочитал статью Д.Мироводина "работа со спрайтами" и стал пробовать
создавать простейшую анимацию.Вроде сделал все так как написано.
Но как сделать чтобы спрайт двигался ?Пойжалуйста объясните по-
чему не работает следующая программа :(при нажатии на bitbtn1 спрайт вроде
должен передвигаться но этого не происходит)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Байрашевский Тахир!
Все у вас работает именно так, как вы написали. Что вы на самом деле хотели — непонятно. Однако, судя по тому, что на форме есть комопнент TTimer1 вы хотели его использовать, но забыли.
Надо весь код из TForm1.BitBtn1Click переместить в TForm1.Timer1Timer а по нажатию кнопки надо только включать таймер: Timer1.Enabled := True;
Впрочем, это только если он у вас изначально выключен. По умолчанию он тоже включен, поэтому чтобы кнопку имело смысл нажимать, надо вначале у компонента Timer1 выставить значение свойства Enabled равным False.
Итого измененный код смотрите в приложении.
Приложение:
--------- Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 24.03.2007, 17:47 Оценка за ответ: 2 Комментарий оценки: Извините но вы меня неправильно поняли.Прежде чем задавать этот вопрос я перепробовал несколько вариантов один из которых был с таймером и я забыл убрать его.Необращайте на этот компонент внимания в моем примере спрайт должен двигаться ПРИ КАЖДОМ НАЖАТИИ КНОПКИ ОДНО НАЖАТИЕ - ОДИН ШАГСПРАЙТА.Но он не двигается!СТОИТ НА МЕСТЕ!Не знаю пробовали ли вы свой вариант
но у меня не когда я его запустил спрайт вообще непоявился на экране.Я связывался с автором статьи Д.Мироводиным ,он запросил весь проект но больше мне не пишет.Я мог бы выслать его и вам.Может дело в системе? На всякий случай сообщаю - Проект создан на DELPHI 5 OC-WINDOWS 98.Жду ответа.
Вопрос № 79.618
Добрый день!
Подскажите как сделать что бы моя программа запускалась сама после
того как произойдет соединение с интернетом
Отвечает: василий1
Здравствуйте, Байрашевский Тахир!
пишите резидент, простой пример это таймер
и в него такую вот функцию
uses
WinInet;
{...}
function IsConnectedToInternet: Boolean;
var
dwConnectionTypes: DWORD;
begin
dwConnectionTypes :=
INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsConnectedToInternet then
ShowMessage('Connected.')//здесь запускайте вашу программу
else
ShowMessage('Not Connected.')
end;
Ответ отправил: василий1 (статус: 1-ый класс)
Ответ отправлен: 25.03.2007, 05:08 Оценка за ответ: 5 Комментарий оценки: Спасибо вроде то что надо.Правда создавать рези- денты в обычном Pascal 7.0 я делал а в Delphi еще нет.Если я правильно понял это просто программа с невидимой формой и таймером и в обработчик ontimer сунуть вашу функцию.Буду пробовать
Вопрос № 79.630
Уважаемые эксперты!При компилировании кода программы(см. приложение) высвечивается Error Incompatible types: 'String' and 'Integer'. Как это устранить?
Приложение:
Отправлен: 24.03.2007, 17:40
Вопрос задал: Kondratev (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Kondratev!
type
TForm1 = class(TForm)
Button1: TButton;
Exit: TButton;
IDEdit: TEdit;
RegEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
ComputerName, chislo : string;
regnumber : string;
begin
chislo:=IDEdit.Text;
regnumber:=IntToStr(chislo*2212)
regnumber:=IntToStr(StrToInt(chislo)*2212);
chislo:=RegEdit.Text; Смысл этой строки непонятен.
end;
end.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 24.03.2007, 17:45 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за подробный ответ!!!Все получилось правильно!!!
Отвечает: Базанов Иван Александрович
Здравствуйте, Kondratev!
regnumber:=chislo*2212 - вы пытаетесь умножить строку на число...
--------- Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 4-ый класс)
Ответ отправлен: 24.03.2007, 21:55 Оценка за ответ: 5 Комментарий оценки: Кратко и ясно!!!!!Спасибо!!!
Отвечает: василий1
Здравствуйте, Kondratev!
проблема в том что вы со строкой пытаетесь работать как с числом.
попробуйте так