Как постепенно исчезнуть объем естественно?

Это решение в основном толкает данные List<Object> в Excel, для этого используется DataTable, я реализовал метод расширения, поэтому в основном есть две вещи. 1. Метод расширения.

public static class ReportHelper
{
    public static string ToExcel<T>(this IList<T> data)
    {
        PropertyDescriptorCollection properties =
            TypeDescriptor.GetProperties(typeof(T));
        DataTable table = new DataTable();
        foreach (PropertyDescriptor prop in properties)
        {
            //table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            if (prop.Attributes[typeof(FGMS.Entity.Extensions.ReportHeaderAttribute)] != null)
            {
                table.Columns.Add(GetColumnHeader(prop), Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            }
        }

        //So it seems like when there is only one row of data the headers do not appear
        //so adding a dummy blank row which fixed the issues
        //Add a blank Row - Issue # 1471
        DataRow blankRow = table.NewRow();
        table.Rows.Add(blankRow);

        foreach (T item in data)
        {
            DataRow row = table.NewRow();
            foreach (PropertyDescriptor prop in properties)
                //row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                if (prop.Attributes[typeof(FGMS.Entity.Extensions.ReportHeaderAttribute)] != null)
                {
                    row[GetColumnHeader(prop)] = prop.GetValue(item) ?? DBNull.Value;
                }
            table.Rows.Add(row);
        }
        table.TableName = "Results";
        var filePath = System.IO.Path.GetTempPath() + "\\" + System.Guid.NewGuid().ToString() + ".xls";
        table.WriteXml(filePath);

        return filePath;
    }

    private static string GetColumnHeader(PropertyDescriptor prop)
    {
        return ((FGMS.Entity.Extensions.ReportHeaderAttribute)(prop.Attributes[typeof(FGMS.Entity.Extensions.ReportHeaderAttribute)])).ReportHeaderText;
    }       
}
  1. Украсить ваши классы DTO с помощью атрибута [ReportHeaderAttribute("Column Name")]
public class UserDTO
    {
        public int Id { get; set; }
        public int SourceId { get; set; }
        public string SourceName { get; set; }

        [ReportHeaderAttribute("User Type")]
        public string UsereType { get; set; }

        [ReportHeaderAttribute("Address")]
        public string Address{ get; set; }

        [ReportHeaderAttribute("Age")]
        public int Age{ get; set; }

        public bool IsActive { get; set; }

        [ReportHeaderAttribute("Active")]
        public string IsActiveString
        {
            get
            {
                return IsActive ? "Yes" : "No";
            }
        }}

Все, что должно быть столбцом в Excel, должно быть украшено [ReportHeaderAttribute("Column Name")]

Затем просто

Var userList = Service.GetUsers() //Returns List of UserDTO;
var excelFilePath = userList.ToExcel();

HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
            var stream = new FileStream(excelFilePath, FileMode.Open);
            result.Content = new StreamContent(stream);
            result.Content.Headers.ContentType =
                new MediaTypeHeaderValue("application/vnd.ms-excel");
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "UserList.xls" };

            return result;
17
задан John D. Cook 1 December 2008 в 22:50
поделиться

3 ответа

Я провел многие свои младшие годы, смешав звукозаписи, живые концерты и будучи ди-джеем для радиостанции моей школы и одной вещи, которую я могу сказать Вам, то, что то, где Вы исчезаете, также важно.

Постепенное появление на введении или во время конца песни звучит довольно естественным, пока нет никаких вокалов, но некоторые из этих компьютеризированных радиостанций исчезнут ГДЕ УГОДНО в песне для создания следующей рекламной паузы... Я не думаю, что существует способ сделать ту звуковую пользу.

В любом случае, я также отвечу на вопрос, Вы попросили..., чтобы логарифмическое затухание, используемое для корректировки уровней звука, обычно упоминалось как "аудио заострение". Вот превосходная статья, которая описывает физиологию человеческого слуха относительно электроники, которую мы теперь используем для наших развлечений. См.: http://tangentsoft.net/audio/atten.html .

11
ответ дан 30 November 2019 в 13:40
поделиться

Вы захотите удостовериться, что конец исчезновения - в "нуле, пересекающемся" в форме сигнала.

Половина секунды довольно быстра. Вы могли бы просто хотеть расширить количество времени, если это не должно быть это быстро. Обычно 2 или 3 секунды являются более естественными.

[еще 112] на синхронизации, это должно действительно быть с уровнем удара музыки и концом в естественной точке в ритме. Попытайтесь получить BPM песни (это может быть вычислено примерно), и постепенно исчезающий по интервалу, равному целому или половинной ноте в той синхронизации.

Вы могли бы также попытаться замедлить скорость воспроизведения, в то время как Вы постепенно исчезаете. Это даст более естественную виниловую запись или звучащую остановку/паузу магнитной ленты. Линейно уменьшите скорость воспроизведения, логарифмически уменьшая объем за период 1 секунды.

6
ответ дан 30 November 2019 в 13:40
поделиться

Если Вы просто надеетесь получать чистый звуковой звук при приостановке или останавливая воспроизведение тогда нет никакой потребности исчезнуть вообще - просто находят нулевую точку пересечения и останавливаются там (или более реалистично просто заполняют остальную часть того заключительного буфера тишиной). При постепенном исчезновении, когда пользователь ожидает, звук для остановки сразу будет звучать неестественным, как Вы заметили, потому что результат разъединяется от действия.

причина остановки в нулевой точке пересечения состоит в том, что нуль является значением устойчивого состояния, в то время как аудио останавливается, таким образом, переход между двумя состояниями является бесшовным. При остановке воспроизведения, когда амплитуда последнего образца является большой тогда, Вы эффективно вводите переходные процессы в аудио с точки зрения аудио аппаратных средств, когда это восстанавливает аналоговый сигнал, который будет слышимым, как выталкивает и/или нажимает.

Другой подход должен исчезнуть для обнуления очень быстро (~ < 10 мс), который эффективно достигает того же самого как пересекающей нуль техники.

4
ответ дан 30 November 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: