Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 765
от 30.03.2007, 09:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 456, Экспертов: 86
В номере:Вопросов: 5, Ответов: 7


Вопрос № 79591: Ув. Эксперты. Как можно от редактировать изображение в Delphi?. Например, есть картинка, мы ее разрезаем на 4 части и меняем их местами и все это нужно сохранить. Или например поменять весь синий цвет на желтый, ну и т. д. Подскажите может есть каки-...
Вопрос № 79606: Нужен компонент для Delphi, для работы с графикой чтобы поддерживал сохранение в gif или png и его методы лучше чтобы назывались также как в компоненте TImage...
Вопрос № 79617: Добрый день! Буду очень благодарен если поможете разобраться в одном вопросе. Прочитал статью Д.Мироводина "работа со спрайтами" и стал пробовать создавать простейшую анимацию.Вроде сделал все так как написано. Но как сдела...
Вопрос № 79618: Добрый день! Подскажите как сделать что бы моя программа запускалась сама после того как произойдет соединение с интернетом...
Вопрос № 79630: Уважаемые эксперты!При компилировании кода программы(см. приложение) высвечивается Error Incompatible types: 'String' and 'Integer'. Как это устранить?...

Вопрос № 79.591
Ув. Эксперты. Как можно от редактировать изображение в Delphi?. Например, есть картинка, мы ее разрезаем на 4 части и меняем их местами и все это нужно сохранить. Или например поменять весь синий цвет на желтый, ну и т. д. Подскажите может есть каки-нибудь ссылки.
Отправлен: 24.03.2007, 09:28
Вопрос задал: Костенко Игорь Викторович (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Костенко Игорь Викторович!
Вообще, обработать картинку можно стандартным способом - через 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 спрайт вроде
должен передвигаться но этого не происходит)

Приложение:

Отправлен: 24.03.2007, 14:07
Вопрос задал: Байрашевский Тахир (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Байрашевский Тахир!
Все у вас работает именно так, как вы написали. Что вы на самом деле хотели — непонятно. Однако, судя по тому, что на форме есть комопнент TTimer1 вы хотели его использовать, но забыли.
Надо весь код из TForm1.BitBtn1Click переместить в TForm1.Timer1Timer а по нажатию кнопки надо только включать таймер:
Timer1.Enabled := True;
Впрочем, это только если он у вас изначально выключен. По умолчанию он тоже включен, поэтому чтобы кнопку имело смысл нажимать, надо вначале у компонента Timer1 выставить значение свойства Enabled равным False.
Итого измененный код смотрите в приложении.

Приложение:

---------
Не узнаешь - не попробуешь.

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 24.03.2007, 17:47
Оценка за ответ: 2
Комментарий оценки:
Извините но вы меня неправильно поняли.Прежде
чем задавать этот вопрос я перепробовал несколько
вариантов один из которых был с таймером и я забыл
убрать его.Необращайте на этот компонент внимания
в моем примере спрайт должен двигаться ПРИ КАЖДОМ
НАЖАТИИ КНОПКИ ОДНО НАЖАТИЕ - ОДИН ШАГСПРАЙТА.Но
он не двигается!СТОИТ НА МЕСТЕ!Не знаю пробовали
ли вы свой вариант но у меня не когда я его запустил спрайт вообще непоявился на экране.Я связывался с автором статьи Д.Мироводиным ,он
запросил весь проект но больше мне не пишет.Я
мог бы выслать его и вам.Может дело в системе?
На всякий случай сообщаю - Проект создан
на DELPHI 5 OC-WINDOWS 98.Жду ответа.


Вопрос № 79.618
Добрый день!
Подскажите как сделать что бы моя программа запускалась сама после
того как произойдет соединение с интернетом
Отправлен: 24.03.2007, 14:11
Вопрос задал: Байрашевский Тахир (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: василий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!

Код программы:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

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 - вы пытаетесь умножить строку на число...

Правильней, наверное так:
regnumber:=IntToStr(StrToInt(chislo)*2212)

---------
Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 4-ый класс)
Ответ отправлен: 24.03.2007, 21:55
Оценка за ответ: 5
Комментарий оценки:
Кратко и ясно!!!!!Спасибо!!!

Отвечает: василий1
Здравствуйте, Kondratev!
проблема в том что вы со строкой пытаетесь работать как с числом.
попробуйте так

Здравствуйте, Kondratev!

Код программы:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

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,regnumber: string;
chislo:integer

begin
inttostr(chislo):=IDEdit.Text;
regnumber:=chislo*2212
inttostr(chislo):=RegEdit.Text;
end;
Ответ отправил: василий1 (статус: 1-ый класс)
Ответ отправлен: 25.03.2007, 05:21
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: support@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное